해당 문제가 어려운 이유는 우리가 흔히 아는 반복문을 통해서 풀면 "시간 초과"가 나오기 때문이다.
시간 제한을 보면 "0.15초"라고 되어있다
해당 문제는 수학적으로 생각이 꽤 필요하다고 생각된다.
결국 반복문 없이 단 번에 해결이 되도록 해야 한다는 것인데....
방법을 결국 스스로 찾지 못하고 결국 구글링의 힘을 빌려버렸다.
그랬더니 공통적인 방법은 %연산자를 통해서 수학적으로 문제를 접근해야 한다는 점이다.
우선 while문으로 해서 시간초과에 걸린 방법은 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
|
a,b,v = map(int,input().split())
day = 1
height = 0
while True:
height += a
if height >= v:
break
else:
height = height - b
day += 1
print(day)
|
cs |
하지만 결국에는 다음과 같이 코딩을 해야 비로소 0.15초 시간 제한 안에 들어갈 수 있다...
1
2
3
4
5
6
|
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)
|
cs |
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
베스킨라빈스 31 게임 파이썬 (0) | 2021.08.15 |
---|---|
[백준] 1978_소수 찾기 파이썬 (feat.런타임 에러 NameError) (0) | 2021.08.08 |
파이썬 실행시간 측정 (0) | 2021.08.07 |
[백준] 1259_팰린드롬수 파이썬 (0) | 2021.08.06 |
[백준] 1157_단어 공부 파이썬 _ set()와 count() (0) | 2021.08.06 |