소스 코드
def dfs(idx,temp_res):
global res
# 탈출조건 1
# 마지막 날까지 일한 경우
if idx == N+1:
if temp_res > res:
res = temp_res
return
for w in range(idx,N+1):
# 범위를 N+1로 정한 이유는 마지막 날에 1일짜리 상담을 받을 수 있기 때문
if w+calendar[w][0] <= N+1:
dfs(w+calendar[w][0],temp_res+calendar[w][1])
# 탈출조건 2
if temp_res > res:
res = temp_res
return
# N일
N = int(input())
# 달력
calendar = [list(map(int,input().split())) for _ in range(N)]
# 숫자 맞추기 위해 0의 위치에 임의의 값 추가
calendar.insert(0,[0])
# 최대 값
res = 0
for q in range(1,N+1):
# 범위 조건 맞는 경우만 함수 작동
if q + calendar[q][0] <= N+1:
dfs(calendar[q][0]+q,calendar[q][1])
print(res)
해결 방법
1. 마지막 날에 1일짜리 상담을 할 수 있는 경우를 고려한 코드를 작성해야 함
느낀 점
최근 한동안 문제를 풀 시간이 없었는데, 나같은 초보자는 아무리 짧은 기간이라도 문제를 꾸준히 푸는 것이 무조건 옳다는 사실을 느낌
크게 어려운 문제 아니었으나 집중이 잘 안되서 생각보다 긴 시간이 소요되었기 때문
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 상근이의 여행 - PYTHON #9372 (0) | 2021.02.13 |
---|---|
[BOJ/백준 코딩] 개미 - PYTHON #3048 (0) | 2021.02.12 |
[BOJ/백준 코딩] 경사로 - PYTHON #14890 (0) | 2021.02.05 |
[BOJ/백준 코딩] 물통 - PYTHON #2251 (0) | 2021.02.04 |
[BOJ/백준 코딩] 로봇 청소기 - PYTHON #14503 (0) | 2021.02.02 |