Where who wants to meet someone

백준 Swift [2869] 달팽이는 올라가고 싶다 본문

백준 알고리즘 문제 기록/일반 수학 1

백준 Swift [2869] 달팽이는 올라가고 싶다

Lust3r 2023. 7. 1. 15:11
728x90

난이도

브론즈 I

 

문제

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

내 답안

let input = readLine()!.split(separator: " ").map { Int($0)! }

/*
 n 만큼의 날만큼 올라가고 내려가고를 반복하고 마지막날 올라가면 끝인 문제
 n(a - b)이지만 이러면 na - nb이기 때문에 마지막날 내려가는 것까지 계산되기에 b를 더해줘야 해서 최종으로 다음과 같은 식
 v = n(a - b) + b
 n(a - b) = v - b
 n = (v - b) / (a - b)
 */

print((input[2] - input[1]) % (input[0] - input[1]) == 0 ? (input[2] - input[1]) / (input[0] - input[1]) : (input[2] - input[1]) / (input[0] - input[1]) + 1)

- 첫 시도에서는 반복문으로 (a - b) 만큼 빼주다가 시간 초과가 되었음

- 두 번째 시도에서는 반복문을 단순화하려다가 답이 틀렸음

- 마지막으로 이 문제가 도대체 무엇을 원하는 것일까 하고 다시금 생각을 한 결과가 코드 블럭의 주석부분.