-
728x90
A와 B가 이동한 횟수가 같지 않아도 된다는 것을 뒤 늦게 알아버렸다...;;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;public class Main {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(bf.readLine());int X = Integer.parseInt(st.nextToken()); // A의 멀리뛰기 거리int Y = Integer.parseInt(st.nextToken()); // B의 멀리뛰기 거리int P1 = Integer.parseInt(st.nextToken()); // A 출발점int P2 = Integer.parseInt(st.nextToken()); // B 출발점// X와 Y중 보폭이 작은 것 먼저 넣기. (X(작음)가 Y(큼)집 앞에서 만나는 경우도 있음)ArrayList<int[]> list = new ArrayList<int[]>();if (X <= Y) {list.add(new int[] { X, P1 }); // X먼저 넣기list.add(new int[] { Y, P2 }); // Y넣기} else {list.add(new int[] { Y, P2 }); // Y먼저 넣기list.add(new int[] { X, P1 }); // X넣기}int cnt = 1; // 일반항 Kn = H1 + n * Xwhile (true) {int num = list.get(0)[1] + cnt * list.get(0)[0]; // 일반항 = P(출발점) + n(cnt) * X(보폭)if (num >= 10000 + list.get(0)[1]) { // 출발지점에서 10000미터 이상 진행한 경우, 만날 수 없다고 판단System.out.println(-1); // 만날 수 없으므로 -1 출력하고break; // 종료}// (작은 보폭이 이동한 위치 - 큰 보폭의 시작점) % 큰 보폭의 크기 == 0이면 만날 수 있는 위치임num -= list.get(1)[1];if (num >= 0 && num % list.get(1)[0] == 0) { // 만났음System.out.println(num + list.get(1)[1]); // 만난 위치 출력(num에 위에서 -해준만큼 다시 더하기)break; // 만났으므로 종료} else // 못 만났으면cnt++; // cnt증가시켜서 한 보폭 더 가보기}}}데롱디롱희희.. (๑′ᴗ‵๑)
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[14891] 백준 - 톱니바퀴(JAVA) (0) 2021.03.14 [18868] 백준 - 멀티버스1(JAVA) (0) 2020.08.31 [10814] 백준 - 나이순 정렬(C++) (0) 2020.04.30 [2108] 백준 : 통계학(C++) (0) 2020.04.30 [1436] 백준 : 영화감독 숌(C++) (0) 2020.04.27