반응형
ㅍ백준 2869번 문제입니다. (solved.ac)기준 브론즈 1 문제입니다.
https://www.acmicpc.net/problem/2869
문제 접근
아주 간단하게 구현만 하면 되는 문제라고 생각하고 반복문을 사용하여 문제에 접근하였는데 시간초과 에러가 발생했었습니다. 시간제한을 보니 0.15초 입니다. 반복문을 사용하여 문제를 해결할 수 없도록 아주 타이트한 시간 제한을 두었습니다. 알고리즘 분류를 확인하여 보니 '수학'이었습니다. a, b, v를 사용하여 원하는 값을 출력하는 수식을 만들어 문제를 해결하였습니다.
달팽이는 v높이의 나무에 오르고 싶어하고 낮에 a만큼 오르고 밤에는 b만큼 미끄러져 내려옵니다.
정상에 올라간 후에는 미끄러지지 않는다고 하였기 때문에 (v-a)값을 하루에 오르는 거리(a-b) 로 나누어준 후 처음에 (v-a)를 해주었기 때문에 하루를 더해줍니다(+1).
따라서 다음과 같은 식이 나오게 됩니다. (v-a) / (a-b) + 1 만약이 식이 나누어 떨어지지 않고 소숫점이 나오게 된다면 그만큼 올라가는데 하루가 더 소요될 것이기 때문에 Python의 math 모듈에 있는 ceil을 사용하여 올림 처리를 해주었습니다.
정답 코드
import sys
import math
# 낮에 올라갈 수 있는 a, 밤에 미끄러지는 b, 막대기 높이 v
a, b, v = map(int, sys.stdin.readline().rstrip().split())
days = (v-a) / (a-b) + 1
print(math.ceil(days))
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 1932번 정수 삼각형(다이나믹 프로그래밍)(DP)(Python - 파이썬) (0) | 2022.02.14 |
---|---|
[백준] 11053번 가장 긴 증가하는 부분 수열(LIS)(DP)(Python - 파이썬) (0) | 2022.02.13 |
[백준] 2579번 계단 오르기(다이나믹 프로그래밍)(DP)(Python - 파이썬) (0) | 2022.02.10 |
[백준] 10989번 수 정렬하기 3(계수 정렬)(Python - 파이썬) (0) | 2022.02.09 |
[백준] 1463번 1로 만들기(다이나믹 프로그래밍)(DP)(Python - 파이썬) (0) | 2022.02.08 |
최근댓글