728x90
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
나의 접근방법
하루가 지날 때마다 결국 A-B만큼 이동하기 때문에 그만큼 곱해줄 때 V보다 큰 수를 찾는 방정식을 구함 + 정상에 오르면 내려오지 않기때문에 B를 한번만 상쇄할 수 있도록 더해준다. 그러면 방정식은
x >= (v-b) / (a-b)
기본적으로 처음 하루는 더해줘야 하기 때문에 모든 답에는 +1을 기본적으로 해준다. 거기에 (v-b) % (a-b)가 0이 아니면 하루동안 올라가는 길이보다 조금 덜 남았기 때문에 하루를 더 추가해서 1을 추가로 더해준다.
코드
import java.util.Scanner
fun main() = with(Scanner(System.`in`)) {
val a = nextInt()
val b = nextInt()
val v = nextInt()
// (v-b) % (a-b)가 0이면 첫날인 +1만, 0이 아니면 추가로 +1을 더 해준다.
print(if ((v-b)%(a-b) == 0) (v-a)/(a-b)+1 else (v-a)/(a-b)+2 )
}
728x90
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
BOJ(11050) - Kotlin (0) | 2022.05.31 |
---|---|
BOJ(1008) - Kotlin (0) | 2022.05.29 |
BOJ(2839) - Kotlin (0) | 2022.05.27 |
BOJ(2775) - Kotlin (0) | 2022.05.26 |
BOJ(1259) - Kotlin (0) | 2022.05.24 |