[Codility] 3. FrogJmp

Donghee Lee·2022년 3월 16일
0

Algorithm

목록 보기
4/17
post-thumbnail

문제 링크
FrogJmp

문제 요약
개구리 한 마리가 1-좌표계에 있다.
한 번에 이동 가능한 거리가 D로 주어지고, 목표 지점(혹은 그 이상)에 도달하기 위한 최소 점프횟수를 구하라.

요구사항
엄청 간단한 줄 알았는데 생각보다 테케가 많았다.
목표지점(Y)와 한 번에 이동 가능한 거리(D)가 나누어 떨어지는게 0이고 처음 위치(X)를 더하면 불필요한 점프를 더 하게 되므로 처음부터 처음 위치와 목표지점 거리를 뺀 versusPos을 적용했다.
그럼 versusPos를 D로 나누어도 딱 나누어 떨어진게 목표지점에 도달하면 그대로 반환하고, 부족하면 한 번더 점프하도록 했다.

코드

import Foundation
import Glibc


public func solution(_ X : Int, _ Y : Int, _ D : Int) -> Int {
    var cnt = Int()
    var calculatedPos = Int()
    var versusPos = Int()

    versusNum = Y - X
    
    if(versusPos % D == 0) {
        cnt = versusPos / D - 1
    } else { 
        cnt = versusPos / D
    }

   func calJumpCnt(_ cnt: Int) -> Int {
        calculatedPos = (D * cnt)
        return calculatedPos
    }

    if(calJumpCnt(cnt) >= Y) {
        return cnt
    } else {
        return cnt+1
    }

}


다른 풀이 - 삼항연산자 사용

import Foundation
import Glibc


public func solution(_ X : Int, _ Y : Int, _ D : Int) -> Int {
    var calculratedCnt = Int()
    calculratedCnt = ((Y-X) / D) + ((Y-X) % D == 0 ? 0 : 1)

    return calculratedCnt
}

ㅋㅋㅋ

profile
Better than Yesterday

0개의 댓글