개발을 시작하는 이야기

[BaekJoon] 달팽이는 올라가고 싶다 본문

개발 이야기/Algorithm Study

[BaekJoon] 달팽이는 올라가고 싶다

Teiresias 2022. 6. 6. 17:53

Swift Study 이주의 문제 2

 

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

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

www.acmicpc.net


문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

예제 입력 1 복사

2 1 5

예제 출력 1 복사

4

예제 입력 2 복사

5 1 6

예제 출력 2 복사

2

예제 입력 3 복사

100 99 1000000000

예제 출력 3 복사

999999901

import Foundation
let input = readLine()!.split(separator: " ").map{ Double($0)! }
let a = input[0]
let b = input[1]
let v = input[2]

var solved = ceil((v - b) / (a - b))
print("\(Int(solved))")

사실 저번주에 풀었던 문제인데 이야기 하다가 이번주 문제로 풀어보자고 이야기가 나와서 나로서는 누워서 코푼 문제

하루에 오르고 미끄러지 지지만 언제든 정상에 도착하면 미끄러지지 않는다는 조건 때문에 약간 골치가 아팠던 문제였다.

 

결론은 높이 v에서 미끄러지는 b를 뺀 값을 하루에 오르는 a에서 미끄러지는 b값을 뺀 값으로 나눈 값을 확인해주면 되는 거였다. 이 값은 딱 떨이지는 값이 될 수도 아닐수도 있기 때문에 ceil을 활용해서 올림으로 처리를 해주었다.

 

4.0은 4일이 걸린다는 이야기 이지만, 1.25는 2일이 걸린다는 이야기 이기 때문이다.

'개발 이야기 > Algorithm Study' 카테고리의 다른 글

퀵 정렬 [Quidck Sort]이란  (0) 2022.07.28
[BaekJoon] 팩토리얼  (0) 2022.06.05
[BaekJoon] 회의실 배정  (0) 2022.06.02
[LeetCode] Two Sum  (0) 2022.06.02
[프로그래머스] 두 정수 사이의 합  (0) 2022.06.02