우주에서 글을 적어본다
99클럽 코테 스터디 42일차 TIL + DP 본문
[오늘의 학습 키워드 및 문제]
- 리트코드의 "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]
이 문제를 그래프라고 생각을 해보자.
하나는 짝수 번을 방문한 경우, 다른 하나는 홀수 번 방문한 경우로 나눠서 생각해 볼 수 있다.
중요한 점은 특정 노드에서 다음 노드로 이동하기까지 그 노드의 방문 횟수가 짝수가 되어야 한다. 또한 이전의 모든 노드들은 다음 노드를 방문할 수 있도록 짝수 번을 들렀다는 것을 알 수 있다.
[오늘의 회고]
- 드디어 마지막 날이다. 여기까지 온 걸 자랑스럽게 여기자. 호호
- 수고했습니다. 끝!
'항해99 TIL' 카테고리의 다른 글
99클럽 코테 스터디 41일차 TIL + DP (0) | 2024.08.31 |
---|---|
99클럽 코테 스터디 40일차 TIL + DP (0) | 2024.08.30 |
99클럽 코테 스터디 39일차 TIL + 그리디(Greedy) (0) | 2024.08.30 |
99클럽 코테 스터디 38일차 TIL + 그리디(Greedy) (0) | 2024.08.28 |
99클럽 코테 스터디 37일차 TIL + 완전탐색 (0) | 2024.08.28 |