본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 2869번(달팽이는 올라가고 싶다)

by Joahnee 2021. 8. 6.

요구능력 : 수학적인 사고(?)

 

코드설명 : 

문제를 보면서 적어보면서 수학공식이 나올거 같다 싶어서 Ax - B(x-1) = V 라는 공식을 생각해냈다.(x는 며칠(걸리는기간) 이다.)

처음에 위 공식의 x자리에 i를 넣고 반복문을 돌렸는데.. 시간초과가 나와버렸다.

그래서 그냥 일방적으로 x를 구해줘야겠다. 싶어서 식을 정리하니 x = (V - B) / (A - B)가 나왔다.

근데 이게 Int로 받고 출력하면 문제가 두번 째 예제 5 1 6을 입력 할 경우 A가 목적지보다 높이 올라가 버린다.

이런경우 처리를 위해 Double로 받고 그냥 올림 해버려서 1.25일이 걸리는걸 2일로 만들었다.

1.1일이든 1.01일이든 나오는건 결국 달팽이는 2일째에 도달하는 것이기 때문이다.

 

후기 : 평탄한 난이도의 문제인것같다. 반복문 못쓰는거 제외하면 앵간한 브론즈2 문제들보다 쉬웠다.

import Foundation
let arr = readLine()!.split(separator: " ").map{Double($0)!}
let A = arr[0]
let B = arr[1]
let V = arr[2]

var x = ceil((V - B) / (A - B))
print("\(Int(x))")

아! 백준에 숏코딩이라는 재미난게 있길래 이번에 저 코드 짧게해보니까 스위프트에서 4등했다. ㅎㅎ

 

import Foundation
let a = readLine()!.split(separator: " ").map{Double($0)!};print("\(Int(ceil((a[2] - a[1]) / (a[0] - a[1]))))")

'Algorithm > 문제풀이_백준' 카테고리의 다른 글

Swift) 백준 2775번 (부녀회장이 될테야)  (0) 2021.08.06
Swift) 백준 10250번 (ACM호텔)  (0) 2021.08.06
Swift) 백준 1193번(분수찾기)  (0) 2021.08.05
Swift) 백준 2292번  (0) 2021.08.05
Swift) 백준 1712번  (0) 2021.08.03

댓글