개발/πŸ€– μ•Œκ³ λ¦¬μ¦˜

⚑️ baekjoon. 14501 퇴사 [Silver III][python]

ttoance 2023. 6. 28. 11:19

 

κ΄€λ ¨ 풀이λ₯Ό λ΄€μ„λ•Œ νƒμš•λ²•μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•˜λ‚˜ ν•˜λ‹€κ°€, 주어진 μ˜ˆμ‹œ μΌ€μ΄μŠ€λ‘œ λ„μ €νžˆ μ ‘κ·Όν•  μˆ˜κ°€ μ—†μ–΄μ„œ,

dfs둜 μ ‘κ·Όν•΄μ„œ λͺ¨λ“  경우의 μˆ˜μ— λŒ€ν•΄ 가지고 μžˆλ‹€κ°€ μ΅œλŒ“κ°’μ„ λ³΄μ—¬μ£ΌλŠ” μ ‘κ·Ό 방식을 νƒν–ˆλ‹€. 

N = int(input())

results = list()

# history λ³€μˆ˜λŠ” debug μš©λ„ 
def dfs(start, current, history):
    if (start >= len(meetingList)):
        results.append(current)
        return
    
    # 였늘 μž‘ν˜€μžˆλŠ” λ―ΈνŒ…μ„ 진행할 경우 
    next = start + meetingList[start][0]
    if (next <= len(meetingList)):
        dfs(next, current + meetingList[start][1], history + str(start))
    
    # 였늘 μž‘ν˜€μžˆλŠ” λ―ΈνŒ…μ„ μ§„ν–‰ν•˜μ§€ μ•Šμ„ 경우 
    for i in range(start + 1, next):
        dfs(i, current, history)
    

meetingList = list()
for _ in range(N):
    meetingList.append(list(map(int, input().split())))

dfs(0, 0, '')
results.sort()
print(results[-1])

 

+) λ‹€λ₯Έ ν’€μ΄λ‘œλŠ” 동적 dp둜 μ ‘κ·Όν•˜λŠ” 방법이 μžˆμ„ 것 κ°™λ‹€. 

https://zu-techlog.tistory.com/42

 

[BOJ] λ°±μ€€ 14501번 퇴사 - 파이썬(Python)

문제 μƒλ‹΄μ›μœΌλ‘œ μΌν•˜κ³  μžˆλŠ” λ°±μ€€μ΄λŠ” 퇴사λ₯Ό ν•˜λ €κ³  ν•œλ‹€. μ˜€λŠ˜λΆ€ν„° N+1일째 λ˜λŠ” λ‚  퇴사λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ, 남은 N일 λ™μ•ˆ μ΅œλŒ€ν•œ λ§Žμ€ 상담을 ν•˜λ €κ³  ν•œλ‹€. λ°±μ€€μ΄λŠ” λΉ„μ„œμ—κ²Œ μ΅œλŒ€ν•œ λ§Žμ€ 상담

zu-techlog.tistory.com

 

λ°˜μ‘ν˜•