본문 바로가기
알고리즘

[Swift 알고리즘] Codility lesson3 - FrogJmp

by 코코종 2022. 10. 30.
728x90

안녕하세요 코코종입니당.

lesson3은Time Complexity 인데요

마침 이전 문제에서 시간복잡도를 고려하지 않아서 틀렸어서 ㅎ.. (사실 이걸 노린 순서인가..?) 한번더 생각하게 되더라구요!

 

현 위치 X, 목표지점 Y, 한번에 뛸 수 있는 거리 D를 주고 Y지점에 도달하는(지나가도 됨) 시간을 구하는 문제였습니다.

단순히 X에서 무한히 D만큼을 더해주고 Y와 비교해도 되지만 아마 그렇게 하면 틀리겠죠?(그러라고 만든문제)

 

그래서 이동해야 하는 거리(Y - X) / 한번에 뛸 수 있는 거리(D) 를 해준 후 나머지가 있다면 한번 더 뛰게 했습니다.

import Foundation
import Glibc

// you can write to stdout for debugging purposes, e.g.
// print("this is a debug message")
public func solution(_ X : Int, _ Y : Int, _ D : Int) -> Int {
    // x: 원래 위치, y: 목표 지점(이상), d: 한번에 얼마나 뛰는지
    let distance = Y - X
    var cnt: Int = Int(distance / D)
    if distance % D > 0 {
        cnt += 1
    }
    return cnt
}

 

 

추가적으로 나머지를 보지 않고 ceil 등으로 올림처리를 해도 되겠네요!

728x90