티스토리 뷰

Frontend/Algorithm

# Codility – FrogJmp

zoeful 2020. 8. 3. 11:50

// 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
댓글
공지사항