요구능력 : 수학적인 사고(?)
코드설명 :
문제를 보면서 적어보면서 수학공식이 나올거 같다 싶어서 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 |
댓글