알고리즘 공부/파이썬(Python)
백준 19947번 투자의 귀재 배주형 파이썬
마달랭
2024. 7. 3. 23:58
리뷰
버림이라는 조건이 까다로운 문제였다. 4달전 dp를 공부하기 전에는 while로 시도했다가 틀렸었다.
문제 풀이
- y의 범위는 0~10이기에 dp를 11개의 리스트로 생성해 준다.
- 5 이하의 기본 케이스들을 초기화 해준다.
- y가 0일땐 h값이 그대로 출력된다.
- y가 1일땐 h * 1.05을 정수형으로 내림
- y가 2일땐 y가 1일때 값 * 1.05을 정수형으로 내림
- y가 3일땐 h * 1.20을 정수형으로 내림
- y가 4일땐 y가 1일때 값 * 1.20을 정수형으로 내림
- 이후의 값은 for문을 통해 반복처리 해주면 된다.
참고 사항
y가 4일때의 케이스가 중요하다, y가 3일때의 값 * 1.05보다 y가 1일때의 값 * 1.20이 더 크다 (왜틀린지 몰랐으나 계산기를 돌려보고 깨달았다.)
정답 코드
def q19947():
# 백준 19947번 파이썬 투자의 귀재 배주형
h, y = map(int, input().split())
dp = [0 * i for i in range(11)]
dp[0] = h
dp[1] = int(h * 1.05)
dp[2] = int(dp[1] * 1.05)
dp[3] = int(h * 1.20)
dp[4] = int(dp[1] * 1.20)
for i in range(5, y + 1):
dp[i] = int(max(dp[i - 5] * 1.35, dp[i - 3] * 1.20, dp[i - 1] * 1.05))
print(dp[y])
q19947()
728x90