Skip to content

Commit 91dd45c

Browse files
2025_0402 두 번째 포스팅 완료(DP & 모듈러 연산에 데여서 급히 포스팅 작성)(수정)
1 parent 475a411 commit 91dd45c

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

_posts/2025-04-02-Dynamic-Programming.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
# [해당 부분은 인트로(글 제목, 카테고리, 썸네일 이미지 등) 관련 정보]
3-
title: "DP라는 아이는 너무 어려워요, 그치만 난 정복할거에요!"
3+
title: "DP라는 아이는 너무 어려워요, 그치만 난 정복할 거에요!"
44
categories: [알고리즘]
55
tags: [알고리즘, DP]
66
image:
7-
path: "../assets/img/posting-images/20250402/0402_thumbnail_2.jpeg"
7+
path: "../assets/img/posting-images/20250402/0402_thumbnail_2.JPG"
88
alt: "Dynamic한 인생...은 재미있고(?) Dynamic한 프로그래밍...은 좀 어렵더라"
99
width: 1200 # 이미지의 너비 조정
1010
height: 1200 # 이미지의 높이 조정
@@ -30,7 +30,7 @@ image:
3030

3131
아니 나는 처음엔, 2 * N 배열의 우리에 사자 배치? 인접하면 안된다고? 사방을 탐색해야 되나… 이런 사고 방식에 이어서 배열 다 탐색해야 겠구나… 생각하고 완전탐색(DFS 아니면 BFS..)를 생각했다. 적당히 백트래킹 하면 2초 안에 풀 수 있을 줄 알고… 내가 문제 풀면서 적어 놨던 주석의 일부를 가져왔다 일단.
3232

33-
```python
33+
```text
3434
- 2×N 배열을 만들고, 각 칸을 기준으로 사자 배치 가능 여부 판단
3535
- 인접 조건을 고려하여 DFS로 탐색
3636
- 방문 여부 체크를 위한 visited 배열 사용
@@ -106,9 +106,9 @@ dp[i][2] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2]
106106

107107
<br>
108108

109-
## ⚠️ 두 가지 중요한 깨달음
109+
## **⚠️ 두 가지 중요한 깨달음**
110110

111-
### 1️⃣ 문제를 DP로 해결해야 한다는 감각 부족
111+
### 1. 문제를 DP로 해결해야 한다는 감각 부족
112112

113113
2차원 배열에서 모든 경우의 수 탐색이라는 걸 보고.. DFS 아니면 BFS라는 고정관념이 어느 정도 있던 것 같다. 그동안 그래프 탐색 문제를 열심히 풀었으니 그런 것도 있던 것 같다. 상태 수가 제한적인 구조가 있다는 것을 파악 하질 못함. 어떻게 패턴화 시키는지에 대해 경험이 부족한 게 컸던 것 같다.
114114

@@ -117,13 +117,13 @@ dp[i][2] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2]
117117
- 완전탐색이 너무 비효율적이라 판단되면 → **DP 전환**을 의심하기
118118
- 문제를 보면 **"상태의 수가 제한적인가?", "반복되는 패턴이 있는가?"** 를 먼저 점검해야 할 것 같다.
119119

120-
### 2️⃣ 모듈러 연산에 대한 이해 부족 (왜 `% 9901`을 계속해야 할까?)
120+
### 2. 모듈러 연산에 대한 이해 부족 (왜 `% 9901`을 계속해야 할까?)
121121

122122
"그냥 마지막에 한 번 나누면 되겠지?" 라는 안일한 생각을 당연히 했지. 중간에 수가 커지면 생기는 **메모리 초과**를 고려하지 못했다. Python과 같은 프로그래밍 언어에서 정수는 자동으로 커지긴 하지만, 메모리를 많이 차지하는 큰 정수를 반복적으로 다루면 메모리 터질 가능성이 매우 높다.
123123

124124
### 몰랐던 핵심 개념:
125125

126-
✅모듈러 연산의 분배법칙
126+
**✅모듈러 연산의 분배법칙**
127127

128128
```python
129129
# 모듈러 연산의 분배법칙은 덧셈, 곱셈, 뺄셈 모두에 적용할 수 있다
@@ -141,7 +141,7 @@ dp[i][2] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2]
141141

142142
<br>
143143

144-
## Python 풀이
144+
## **Python 풀이**
145145

146146
```python
147147
MOD = 9901
@@ -162,7 +162,7 @@ DP로 풀면 코드 확 짧아지네… 이런 걸 일일이 DFS로 찾을 생
162162
<br>
163163

164164

165-
## 🥕마무리
165+
## **🥕마무리**
166166

167167
DP 관련된 백준의 훌륭한(?) 문제들을 추천하며 마무리해 보고자 한다.
168168

517 KB
Loading
-468 KB
Binary file not shown.

0 commit comments

Comments
 (0)