Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- acmicpc
- 1547
- 5586
- 2506
- 공주대 정보보호
- BoB 7기
- 리뷰
- 10833
- BoB 후기
- text
- 2605
- 2965
- boj
- 정보보호 영재원
- EOF
- 11943
- 5086
- 차세대 보안 리더 양성
- 영재원
- 2476
- 정보보호 영재교육원
- 차세대 보안 리더 양성 프로그램
- 10995
- 2501
- BOB
- 11109
- 4101
- Python
- Best of the Best
- 영재교육원
Archives
- Today
- Total
짱해커가 되어보자
boj 2869 본문
문제
이번 문제는 달팽이 문제로 잘 알려져 있는 문제이다
달팽이가 V 높이를 올라가는게 목표이며, 낮에 A만큼 올라간 후 밤에 B 만큼 내려간다
정상에 올라간 이후에는 미끄러지지 않으며, 예외에 대한 입력은 받지 않는다
입력
: V, A, B출력
: 정상까지 올라는데 걸리는 일 수
풀이
import math
a, b, v = map(int, input().split())
print(math.ceil((v-a) / (a-b)) + 1)
문제의 풀이의 시간이 0.15초인 점과 입력 최대가 10억인 점을 보았을 때 단순 반복으로는 안된다
- 정상에 도착했을 때는 미끄러지지 않는다 : (v-a) 로 시작
- 낮에 A만큼 올라가고 밤에 B만큼 미끄러진다 : (a-b) * c
그렇기에 (v-a)까지 (a-b) * c 로 걸리는 카운트와 처음 -a를 한 카운트(+1)를 더해주면 된다
Comments