본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 18512 점프 점프 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 9. 7.
728x90
반응형

BaekJoon 백준 18512 점프 점프 문제는 A, B가 멀리뛰기를 하고 있다. A는 한 번에 X 미터를, B는 한 번에 Y 미터를 뛴다. 두 학생이 공통적으로 지나게 되는 지점 중에서 시작 지점으로부터 가장 가까운 지점을 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 18512 점프 점프 문제 정보

출처

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

알고리즘 분류

- 브루트 포스 알고리즘 (brute force algorithm), 수학

난이도

- 브론즈 1 / Bronze 1

 

점프 점프 문제 요약

  • 두 학생 A B가 일직선상의 트랙에서 같은 방향으로 멀리뛰기를 하고 있다. A는 한 번에 X 미터를, B는 한 번에 Y 미터를 뛴다.
  • 두 사람이 한 번에 멀리뛰기를 하는 거리 X, Y와 시작 지점의 위치 값 P1, P2가 각각 자연수로 주어진다. (1 ≤ X, Y, P1, P2 ≤ 100)
  • 두 학생이 공통적으로 지나게 되는 지점 중에서 시작 지점으로부터 가장 가까운 지점을 구하여 출력한다.
  • 단, 두 학생이 공통적으로 지나는 지점이 없다면 -1을 출력한다.

 

문제 풀이 과정

  1. 두 학생 A와 B가 지나가는 지점을 1000번까지 측정한다.
  2. 매 번 뛸 때마다 현재 지점이 상대방 학생이 지나갔던 지점이라면 그 지점을 출력한다.
  3. 1000번 뛸 때까지 공통적으로 지나는 지점이 없다면 -1을 출력한다.

 

코드 및 설명
  • posX [], posY [] - 학생 A, B가 지나는 지점을 저장한 리스트
X, Y, Px, Py = map(int, input().split())
posX, posY = [Px], [Py]
spot = -1
for i in range(1000):
    posX.append(posX[i] + X)
    posY.append(posY[i] + Y)
    if posX[i] + X in posY or posY[i] + Y in posX:
        spot = min(posX[i] + X, posY[i] + Y)
        break
print(spot)

BaekJoon 백준 18512 점프 점프 문제를 파이썬 브루트 포스 알고리즘 python brute force algorithm으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글