캥거루 두마리가 각각 다른 위치에서 다른 속도로 점프할 경우, 같은 시간에 같은 위치에 존재하는 여부 반환
규칙
- 첫 번째 캥거루의 시작 위치는 x1, 이동간격은 v1
- 두 번째 캥거루의 시작 위치는 x2, 이동간격은 v2
- ex) x1 = 0, v1 = 3 / x2 = 4, v2 = 2
제한사항
- 0 ≤ x1 ≤ x2 ≤ 10000
- 1 ≤ v1 ≤ 10000
- 1 ≤ v2 ≤ 10000
나의 풀이
- 두 번째 캥거루의 이동간격이 첫 번째 캥거루 보다 큰 경우는 평생 동일 시간대에 만날 수 없음
- 두 캥거루가 만날 때 까지 확인하기 위한 범위값 구하기
- 대략 (첫 번째 캥거루의 시작위치 + 이동간격) * (두 번째 캔거루의 시작위치 + 이동간격) 값 안에서는 구할 수 있지 않을까 생각
- 최소한의 범위로 구하고자 제곱근 활용
- 왜?: 문제에 주어진 예제를 봤을 때, 대충 그정도 값 안에 구해지길래...
- 자세한 이유 조사 필요
- 왜?: 문제에 주어진 예제를 봤을 때, 대충 그정도 값 안에 구해지길래...
- 최소한의 범위로 구하고자 제곱근 활용
- 대략 (첫 번째 캥거루의 시작위치 + 이동간격) * (두 번째 캔거루의 시작위치 + 이동간격) 값 안에서는 구할 수 있지 않을까 생각
// 생략
/*
* Complete the 'kangaroo' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. INTEGER x1
* 2. INTEGER v1
* 3. INTEGER x2
* 4. INTEGER v2
*/
function kangaroo(x1, v1, x2, v2) {
// Write your code here
if (v2 > v1) {
return 'NO';
}
let finish = 'NO';
for(let i = 0; i < Math.sqrt((x1+v1)*(x2+v2))+1; i++) {
if (x1+v1*i === x2+v2*i) {
finish = 'YES';
break;
}
}
return finish;
}
// ..후략
결과
'HackerRank' 카테고리의 다른 글
[해커랭크] (Data Structures - Arrays) Dynamic Array (javascript) (0) | 2022.09.05 |
---|---|
[해커랭크] (Data Structures - Arrays) 2D array - DS; 모래시계 행렬 (javascript) (0) | 2022.09.05 |
[해커랭크] (Implementation Algorithms) Grading Students (javascript) (1) | 2022.08.22 |
[해커랭크] (Constructive Algorithms) Flipping the Matrix (0) | 2022.08.21 |
[해커랭크] (1 Week Day 1) Time Conversion (javascript) (0) | 2022.08.21 |