14501. 퇴사 문제 바로가기
해결 방법
주요 과정
work
함수를 통해 모든 경우의 수를 확인하여 가장 큰 상담 금액(final_income
)을 출력한다.
work
함수
day를 0 부터 시작하여 각 날에 대해 상담을 하는 경우와 상담을 안하는 경우 두가지를 모두 체크하여 모든 경우를 확인한다.
해당 day에 상담하는 경우
day에 상담할 경우 필요한 시간을 더해주고 income에 상담 금액을 더해준다.
해당 day에 상담하지 않는 경우
income의 값 변화없이 day만 + 1 해준다.
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)