

<타임아웃 난 코드>
import Foundation
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let a = input[0]
let b = input[1]
let v = input[2]
var day = 0
var lenth = 0
while true {
if (lenth < v){
day += 1
lenth += a
if(lenth < v){
lenth -= b
}
}else{break}
}
print(day)
이 코드로 했을땐 작은 값은 잘 나오는 것을 확인할 수 있다. 하지만 숫자가 점점 커지기 시작하면 결과값을 찾는 시간이 길어지면서 타임아웃이 발생한다.
결국 이 문제의 솔루션은 수학식을 구하는 것이다.
v <= day(a-b)+b
이 식을 구했다면 문제는 해결된다.
<정답코드>
import Foundation
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let a = input[0]
let b = input[1]
let v = input[2]
var day = (v-b)/(a-b)
if (((v-b)%(a-b)) != 0){
day += 1
}
print(day)

<문제를 풀면서 배운점>
무작정 코드 작성을 하는것 보다 수학식을 세워서 활용하는것이 속도향상에 도움이 되구나 !
'백준' 카테고리의 다른 글
| 스위프트 백준 2292 벌집 (0) | 2022.12.29 |
|---|---|
| [SWIFT]백준1920 수찾기/이진탐색/시간복잡도 (1) | 2022.12.29 |
| [SWIFT]백준9012 괄호 (0) | 2022.12.29 |
| [SWIFT]백준10828 스택 (0) | 2022.12.28 |
| [SWIFT]2839 설탕배달 (0) | 2022.12.27 |