https://www.acmicpc.net/problem/2869
<문제 해설>
시간제한이 0.15초로 기존 문제들에 비해 매우 짧은 것을 알수 있다. 따라서 이문제선 반복문을 사용할수 없다. 달팽이가 올라가는걸 다더하고 빼줄시간이 없다. 그래서 사칙연산을 사용한다. 이때 함정이 있는데 만약 V미터에 한번이라도 도달했으면 미끄러지지 않는다는 것이다. 그래서무작정 A-B한 값으로 V를 나누어 버리면 안된다. 이것에 대한 해결법은 V에서 먼저 A미터를 빼버리는 것이다. 그리고 남은 값을 A-B한 값으로 나눠 올림하고 1을 더하면된다. 1을 더하는 이유는 앞에서 V-A미터를 빼는것이 하루를 뜻하기 때문이고 몫을 구하는과정이 도착 전날가지의 과정이라서다. A미터를 빼는이유는 도착지점에서 부터 V-A지점까지 도착전날에 아무곳이나 밟으면 다음날은 무조건 도착지점을 방문하기 때문이다.
<예시>
입력 : 3 1 8
day 1 : 3-1 = 2m
day 2 : 2+3-1 = 4m
day 3 : 4+3-1 = 6m
day 4 : 6+3 = 9m > 8m 도착
출력값 : 4
<코드>
import sys
A,B,V = list(map(int,sys.stdin.readline().split()))
daybefore = V-A
day = daybefore//(A-B)
remainder = daybefore%(A-B)
if remainder>0:
day +=1
print(day+1)
<코드 설명>
import sys //sys사용하기 위한 라이브러리 import
A,B,V = list(map(int,sys.stdin.readline().split())) // ABV값 받아오기
daybefore = V-A //도착전날까지 도착해야하는 장소 계산
day = daybefore//(A-B) //A-B한 값으로 도착전날을 나눈 몫 day에 저장
remainder = daybefore%(A-B) //위 계산에서 남은 나머지를 저장
if remainder>0: //나머지가 0보다 크다면 하루 추가해줌(올림하는 과정 여기서)
day +=1
print(day+1) //출력할때 마지막날인 1 더해서 출
'Coding Test > Python' 카테고리의 다른 글
[Python/백준] 10845 큐 (0) | 2023.01.12 |
---|---|
[Python/백준] 10828 스택 (0) | 2023.01.11 |
[Python/백준] 5430 AC (0) | 2023.01.11 |
[Python/백준] 10815 숫자 카드 (0) | 2023.01.09 |
[Python/백준] 2751 수 정렬하기 2 (0) | 2023.01.08 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간