[Baekjoon] 2869. 달팽이는 올라가고 싶다.

mj·2024년 4월 30일
0

코딩테스트문제

목록 보기
6/50

2869. 달팽이는 올라가고 싶다

  • 높이가 V미터
  • 낮 : A미터 위로
  • 밤 : B미터 아래로

단, 정상에 올라가면 미끄러지지 않는다.
-> 정상까지 몇일이 걸리는가?



🔍 나의 코드

a, b, v = map(int, input().split())

if (v-b)%(a-b)==0: print((v-b)//(a-b))
else: print((v-b)//(a-b) + 1)

코드 설명

x를 정상까지 걸리는 일 수 라고 하자.
처음엔 A*x - B*x >= V를 만족시키면 된다고 생각했는데 이 경우는 '정상에 올라가면 미끄러지지 않는다'는 조건을 만족시키지 못한다.
정상에 올라가면 미끄러지지 않기때문에 마지막 일수에는 굳이 내려가지 않고 낮에 올라간 높이가 막대높이V를 넘기만 하면 된다.

따라서, A*x - B(x-1) >= V 를 만족시키는 x를 구해야 한다.
식을 정리하면,

Ax - B(x-1) >= V

Ax - Bx + B >= V
(A-B)x >= V-B
x >= (V-B)/(A-B)

최종적으로는 x >= (V-B)/(A-B) 이다.
이때 x는 정수이어야 한다.



🔍 다른 코드

a,b,v = map(int,input().split())
k = (v-b)/(a-b)
print(int(k) if k == int(k) else int(k)+1)

내 코드와 다른 점
해결 방법, 식은 같지만
x >= (V-B)/(A-B)를 만족하는 x를 구해내는 방법이 다르다.

profile
일단 할 수 있는걸 하자.

0개의 댓글