티스토리 뷰

반응형

www.acmicpc.net/problem/2869

 

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

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

www.acmicpc.net

 


 

⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 수학

 

 


 

⊙ 문제 접근 과정

 

맨 처음에 풀었던 코드는 아래와 같다

 

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

total = 0
stack = 0

while True:
    total = total + a
    stack = stack + 1
    if(total>=v):
        break
    else:
        total = total - b

print(stack)

 

하지만 시간 초과가 나왔다.

 

반복문이 들어가 시간 복잡도가 O(n)인 탓이다.

예제 입출력 3번을 넣었는데 결과가 나오지도 않았다.

 

주어진 시간은 0.15초

반복문을 사용해선 안 된다.

 

인터프리터 언어인 파이썬에선 더더욱.

 

그래서 코드를 더 간단하게 구현하려 생각했고 한 줄로 구현할 수 있었다.

 

 


 

⊙ 문제 풀이

 

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

print((v-b-1) // (a-b) + 1)

 


⊙ 결과

 

 


 

 

⊙ 마무리

 

 

시간복잡도를 고려하자

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함