알고리즘 공부/파이썬(Python)

백준 19947번 투자의 귀재 배주형 파이썬

마달랭 2024. 7. 3. 23:58
반응형

리뷰

버림이라는 조건이 까다로운 문제였다. 4달전 dp를 공부하기 전에는 while로 시도했다가 틀렸었다.

 

문제 풀이

  1. y의 범위는 0~10이기에 dp를 11개의 리스트로 생성해 준다.
  2. 5 이하의 기본 케이스들을 초기화 해준다.
  3. y가 0일땐 h값이 그대로 출력된다.
  4. y가 1일땐 h * 1.05을 정수형으로 내림
  5. y가 2일땐 y가 1일때 값 * 1.05을 정수형으로 내림
  6. y가 3일땐 h * 1.20을 정수형으로 내림
  7. y가 4일땐 y가 1일때 값 * 1.20을 정수형으로 내림
  8. 이후의 값은 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
반응형