본문 바로가기
PS 문제 풀이/HackerRank

[HackerRank] Kangaroo (Java)

by 까망 하르방 2021. 2. 14.
반응형

출처https://www.hackerrank.com/challenges/kangaroo/problema

캥거루 k1, k2가 주어져 있으면 각 캥거리의 출발위치 x1, x2와 점프 거리 v1, v2가 주어진다.

동일한 횟수의 Jump로 두 캥거루 k1, k2가 같은 위치에

있으면 "YES"를 출력하고 불가능하면 "NO"를 출력한다.

 Input 
0 2 5 3

 Output 

NO

1. (문제 조건 상) k1은 k2은 보다 앞선 위치에서 시작한다.

    (그렇기에 k1의 속력 v1이 k2의 v2 보다 낮으면 절대 만날 수 없다.)

2. 문제 요구사항에서 두 캥거루가 동일한 위치에 만냐는지 물었을 때, 두 캥거루의 점프 횟수도 동일해야 한다.

   따라서, (k1의 속력 v1 > v2 상태에서) k1의 위치가 k2보다 앞서면 더이상 탐색할 필요가 없다. 


import java.util.Scanner;
 
 
public class Solution{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        int k1 = sc.nextInt();
        int v1 = sc.nextInt();
         
        int k2 = sc.nextInt();
        int v2 = sc.nextInt();
         
        // k1의 위치는 k2보다 앞선 위치 (전제 조건)
        // k1의 속력이 k2보다 낮으면 종료
        if(v1 < v2) {
            System.out.println("NO");
            return;
        }
         
        // v1 > v2라는 전제
        while(true) {
            // k1 > k2 이면서 탐색 종료
            if(k1 > k2) {
                System.out.println("NO");
                return;
            }
             
            // k1, k2 동일하게 점프를 한다.
            k1 = v1 + k1;
            k2 += v2;
             
            // 점프 했을 때 위치가 같다면
            if(k1 == k2) {
                System.out.println("YES");
                return;
            }
        }
    }
}

반응형

'PS 문제 풀이 > HackerRank' 카테고리의 다른 글

[HackerRank] Almost Sorted (Java)  (0) 2021.02.14
[HackerRank] Cut the sticks (Java)  (0) 2021.02.14
[HackerRank] The Power Sum  (0) 2021.02.14
[HackerRank] Absolute Permutation  (0) 2021.02.14
[HackerRank] Jumping on the Clouds  (0) 2021.02.14

댓글