반응형
출처: 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 |
댓글