알고리즘 문제풀이/[C++] Baekjoon

백준 문제 18512번 점프 점프

2021. 2. 1. 12:54

문제 출처:

https://www.acmicpc.net/problem/18512

 

18512번: 점프 점프

첫째 줄에 두 사람이 한 번에 멀리뛰기를 하는 거리 X, Y와 시작 지점의 위치 값 P1, P2가 각각 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ X, Y, P1, P2 ≤ 100)

www.acmicpc.net

점프 점프 문제

이번에 해당 문제에 대해 이런식으로 접근해 보았습니다.

//P_18512

#include <iostream>

using namespace std;

int main(){

    int X, Y, P1, P2 ;
    cin >> X >> Y >> P1 >> P2 ;
    int x1 = 0, x2 = 0 ;
    int y1, y2 ;
    if(둘이 만나지 않는 조건){
        do{
            y1 = X * x1 + P1 ;
            y2 = Y * x2 + P2 ;
            if(y1 < y2)
                x1 ++ ;
            else
                x2 ++ ;
        }while(y1 != y2);
        cout << X * x1 + P1 ;
    }
    else
        printf("-1") ;
    
    return 0 ;
}

비교적 간단한 코드로 로직에 여러 문제가 있을 수 있지만 이런 방식으로 진행을 하면 되지 않을까라는 생각이었습니다.

하지만 둘이 만나지 않을 조건을 정하는 것이 떠오르질 않았습니다.

또한 이렇게 하는 방법으로 해당 조건을 거르고 테스트를 해보았을때

주어진 시간보다 많은 시간을 사용한다는 것을 발견하였습니다.

​

그렇기 때문에 제 코드는 여러번 시간 초과를 표출하였고 저보다 대단하신 분들의 코드를 참고하고자 하였습니다.

​

이분 코드를 참고하였습니다.

https://dlwnsdud205.tistory.com/61

 

[백준 / BOJ] 18512 점프 점프

문제 출처 : www.acmicpc.net/problem/18512 18512번: 점프 점프 첫째 줄에 두 사람이 한 번에 멀리뛰기를 하는 거리 X, Y와 시작 지점의 위치 값 P1, P2가 각각 공백을 기준으로 구분되어 자연수로 주어진다. (

dlwnsdud205.tistory.com

전체적인 로직은 비슷하다고 생각했으나 이런 방법이 더 빠르다는 것을 알게된 시간이었습니다.

//
//  main.cpp
//  18512 점프 점프
//
//  Created by 이준영 on 2020/10/05.
//

#include <iostream>

using namespace std;

int X, Y, P1, P2;
int check1[10000205];

void find_LCM(int num1, int num2){
    for(int i = 0; i <= 100000; i++){
        check1[num1 + (X*i)] = 1;
    }
    for(int i = 0; i <= 100000; i++){
        if(check1[num2 + (Y*i)] == 1){
            cout << num2 + (Y*i) << "\n";
            return;
        }
    }
    cout << -1 << "\n";
    return;
}

int main(int argc, const char * argv[]) {
    ios::sync_with_stdio();
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> X >> Y >> P1 >> P2;
    find_LCM(P1,P2);
    return 0;
}

추가적으로 이 코드에서 쓰인 아래의 요소들은 처음 보았기에 어떤 것인지 찾아보았습니다.

ios::sync_with_stdio(); //defalut value는 true 
cin.tie(NULL);
cout.tie(NULL);

- C와 C++ 간의 I/O 스트림 동기화

​

cin, cout의 시간을 줄여줄 수 있는 코드라고 합니다.

https://raylee00.blog.me/222038557757

 

C++ 입출력 속도와 ios_base::sync_with_stdio(false), cin.tie(NULL) 에 관한 글

전에 python의 input() 함수의 속도와 관련된 글을 썼었는데, 요즘에는 C++을 많이 쓰게 되면서 C++에 대...

blog.naver.com

​

앞으로 더 열심히 공부해야겠다 생각했습니다

 

해당 부분은 아래의 Github에서도 보실 수 있습니다.

https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P18512_JumpJump.cpp

 

GitHub - gurcks8989/CodingTest: BackJoon_study_with_c++

BackJoon_study_with_c++. Contribute to gurcks8989/CodingTest development by creating an account on GitHub.

github.com

 

훈수 및 조언은 언제든지 환영입니다. 

저작자표시 비영리 동일조건 (새창열림)
'알고리즘 문제풀이/[C++] Baekjoon' 카테고리의 다른 글
  • 백준 문제 5533번 유니크
  • 백준 문제 2992번 크면서 작은 수
  • 백준 문제 14916번 거스름돈
  • 백준 문제 16112번 5차 전직
gurcks8989
gurcks8989
꿈많은 예비 개발자 & 현재 한동대 컴퓨터 전공으로 재학 중
gurcks8989
Coding-Leaf
gurcks8989
전체
오늘
어제
  • 전체보기 (199)
    • Profile (1)
    • 학습일기 (1)
    • 마음의 양식 (3)
    • Project (41)
      • C Project (1)
      • Java Project (1)
      • Spring Web Project (7)
      • React Web Project (32)
    • 코딩 언어 (22)
      • C (10)
      • C++ (1)
      • Java (3)
      • JavaScript (8)
    • 개인 공부 (30)
      • Network with C (5)
      • 통계학 (1)
      • Operating System (0)
      • Deep Learning (0)
      • Data Structure (1)
      • App(Flutter) (12)
      • Web (3)
      • Object Oriented Design Patt.. (8)
      • 낙서장 (0)
    • 알고리즘 문제풀이 (82)
      • [C++] Baekjoon (40)
      • [C++] Programmers (13)
      • [C++] Leetcode (27)
      • [C++] Codeground (2)
    • [C++] Beakjoon 단계별로 풀어보기 (19)
      • 1. 입출력과 사칙연산 (11)
      • 2. if문 (5)
      • 3. for문 (3)
      • 4. while문 (0)
      • 5. 1차원 배열 (0)
      • 6. 함수 (0)
      • 7. 문자열 (0)
      • 8. 기본 수학 1 (0)
      • 9. 기본 수학 2 (0)
      • 10. 재귀 (0)
      • 11. 브루트 포스 (0)
      • 12. 정렬 (0)
      • 13. 집합과 맵 (0)
      • 14. 백트래킹 (0)
      • 15. 동적 계획법 1 (0)
      • 16. 그리디 알고리즘 (0)
      • 17. 정수론 및 조합론 (0)
      • 18. 스택 (0)
      • 19. 큐, 덱 (0)
      • 20. 분할 정복 (0)
      • 21. 이분 탐색 (0)
      • 22. 우선순위 큐 (0)
      • 23. 동적 계획법 2 (0)
      • 24. DFS와 BFS (0)
      • 25. 최단 경로 (0)
      • 26. 투 포인터 (0)
      • 27. 동적 계획법과 최단거리 역추적 (0)
      • 28. 트리 (0)
      • 29. 유니온 파인드 (0)
      • 30. 최소 신장 트리 (0)
      • 31. 트리에서의 동적 계획법 (0)
      • 32. 기하 (0)
      • 33. 동적 계획법 3 (0)
      • 34. 문자열 알고리즘 1 (0)
      • 35. 위상 정렬 (0)
      • 36. 최소 공통 조상 (0)
      • 37. 강한 연결 요소 (0)
      • 38. 세그먼트 트리 (0)
      • 39. 스위핑 (0)
      • 40. 동적 계획법 4 (0)
      • 41. 컨벡스 헐 (0)
      • 42. 이분 매칭 (0)
      • 43. 네트워크 플로우 (0)
      • 44. MCMF (0)
      • 45. 더 어려운 수학 (0)
      • 46. 고속 푸리에 변환 (0)
      • 47. 문자열 알고리즘 2 (0)
      • 48. 어려운 구간 쿼리 (0)
      • 49. 동적 계획법 최적화 (0)
      • 50. 매우 어려운 자료구조와 알고리즘 (0)

블로그 메뉴

  • Blog Home
  • Github
  • Profile
  • Tag Cloud

최근 글

hELLO · Designed By 정상우.
gurcks8989
백준 문제 18512번 점프 점프
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.