티스토리 뷰
// FrogJmp
// 위치 X에서 Y까지 최소 점프 횟수를 계산합니다.
/*
[ 문제 ]
작은 개구리가 길 반대편에 가고 싶어합니다.
개구리는 현재 X 위치에 있으며 Y 이상의 위치에 도달하려고합니다.
작은 개구리는 항상 고정 거리 D를 뛰어 넘습니다.
작은 개구리가 목표에 도달하기 위해 수행해야하는 최소 점프 횟수를 세십시오.
3 개의 정수 X, Y 및 D가 주어지면 X 위치에서 Y 이상의 위치로 최소 점프 횟수를 반환합니다.
[ 가정 ] - X, Y 및 D는 [ 1 .. 1,000,000,000 ] 범위 내의 정수 이며, X ≤ Y
[ example ]
X = 10, Y = 85, D = 30
개구리가 다음과 같이 배치되므로 함수는 3을 반환해야합니다.
첫번째 점프 후 위치 10 + 30 = 40
두번째 점프 후 위치 10 + 30 + 30 = 70
세번째 점프 후 위치 10 + 30 + 30 + 30 = 100
*/
function solution(X, Y, D) {
// write your code in JavaScript (Node.js 8.9.4)
let a = Y%D;
if(a<D && a>X){
return parseInt(Y/D) + 1;
}else{
return parseInt(Y/D);
}
}
// 소요시간 : 10분
// 결과 : 22%
// 오류 : WRONG ANSWER
function solution(X, Y, D) {
// write your code in JavaScript (Node.js 8.9.4)
let count = 0;
let sum = 0;
if(sum < Y){
sum = X + D;
if(sum === Y){
return 1
}else{
for(let i=0; i<Y; i++){
sum = sum + D;
count++
if(Y <= sum){
return count + 1
}
}
}
}
}
// 소요시간 : 16분
// 결과 : 22%
// 오류 : WRONG ANSWER
/**
* Hint : 반복문 돌지말고 수학으로 계산하세요.
*/
function solution(X, Y, D) {
// write your code in JavaScript (Node.js 8.9.4)
return Math.ceil((Y - X) / D);
}
// 소요시간 : 9분
// 결과 : 100%
/**
[ 문제풀이 ]
처음에는 반복문을 돌면서 문제를 해결하려고 했으나,
고려해야하는 사항들을 모두 분기문을 태우다보니
빠뜨리는 경우의 수도 발생하고 비효율적인 코드가 되었다.
그래서 문제풀이 방식을 확인하니 아주 간단한 방법으로 해결되는 문제임을 알 수 있었다.
자바스크립트에서 제공하는 함수 중 Math.ceil()을 사용하면 문제를 쉽게 해결할 수 있는데,
Math.ceil()은 소수점 올림의 역할을 하는 함수로
X라는 시작값은 고정값이기 때문에 Y - X를 통해 D로 나눠줄 값을 먼저 설정하고
Math.ceil()를 통해 D로 나눠준 값의 나머지를 올림처리 해주게 되면 문제가 해결된다.
X = 10, Y = 85, D = 30
*/
'Frontend > Algorithm' 카테고리의 다른 글
# Codility - PermMissingElem (0) | 2020.08.03 |
---|