문제 링크
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
}
ㅋㅋㅋ