Posts [baekjoon] 14501. 퇴사 (python)
Post
Cancel

[baekjoon] 14501. 퇴사 (python)

14501. 퇴사 문제 바로가기

해결 방법

주요 과정

work 함수를 통해 모든 경우의 수를 확인하여 가장 큰 상담 금액(final_income)을 출력한다.

work 함수

  1. day를 0 부터 시작하여 각 날에 대해 상담을 하는 경우와 상담을 안하는 경우 두가지를 모두 체크하여 모든 경우를 확인한다.

    • 해당 day에 상담하는 경우

      day에 상담할 경우 필요한 시간을 더해주고 income에 상담 금액을 더해준다.

    • 해당 day에 상담하지 않는 경우

      income의 값 변화없이 day만 + 1 해준다.

  2. day의 값이 딱 N일 경우에만 final_income과 비교하여 갱신한다.

    N보다 커지게 되면 회사에 없기 때문에 상담이 불가능! → 불가능한 경우이기에 제외한다.

구현한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def work(day, income):
    global final_income
    if day < N:
        work(day + consulting[day][0], income + consulting[day][1]) # 상담할 경우
        work(day + 1, income) # 상담안할 경우
    if day == N: # 퇴사하는 날
        if final_income < income:
            final_income = income


N = int(input())
consulting = [list(map(int, input().split())) for _ in range(N)]
final_income = 0
work(0, 0)
print(final_income)
This post is licensed under CC BY 4.0 by the author.

[baekjoon] 14502. 연구소 (python)

[baekjoon] 13458. 시험감독 (python)

Comments powered by Disqus.