Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

우주에서 글을 적어본다

99클럽 코테 스터디 42일차 TIL + DP 본문

항해99 TIL

99클럽 코테 스터디 42일차 TIL + DP

우주로 날아간 사람 2024. 9. 1. 11:30

[오늘의 학습 키워드 및 문제]
- 리트코드의 "First Day Where You Have Been in All the Rooms" 문제를 풀었다.
- 마지막날 주제는 바로 DP(다이나믹 프로그래밍)이다.

[나의 코드]

class Solution:
    def firstDayBeenInAllRooms(self, nextVisit: List[int]) -> int:
        MOD = 10 ** 9 + 7
        n = len(nextVisit)
        dp = [0] * n
        
        for i in range(n - 1):
            dp[i + 1] += (2 * dp[i] - dp[nextVisit[i]] + 2) % MOD
    
        return dp[-1]

이 문제를 그래프라고 생각을 해보자.
하나는 짝수 번을 방문한 경우, 다른 하나는 홀수 번 방문한 경우로 나눠서 생각해 볼 수 있다.

중요한 점은 특정 노드에서 다음 노드로 이동하기까지 그 노드의 방문 횟수가 짝수가 되어야 한다. 또한 이전의 모든 노드들은 다음 노드를 방문할 수 있도록 짝수 번을 들렀다는 것을 알 수 있다.

[오늘의 회고]
- 드디어 마지막 날이다. 여기까지 온 걸 자랑스럽게 여기자. 호호
- 수고했습니다. 끝!