Skip to content

Commit

Permalink
docs: Add PS study week5 post (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
Queue-ri committed Jul 13, 2024
1 parent 29b28b5 commit 2477215
Showing 1 changed file with 93 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
title: 5์ฃผ์ฐจ ์ฝ”ํ…Œ ํ’€์ด ํšŒ๊ณ  - Queue-ri
image: '../../../static/media/asdf.jpg'
date: 2024-04-13
tags:
- problem solving
- algorithm
description: ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 5์ฃผ์ฐจ ํšŒ๊ณ ๋ก - Queue-ri
---

# 5์ฃผ์ฐจ ์ฝ”ํ…Œ ํ’€์ด ํšŒ๊ณ 
- ํ’€์ด ์ฃผ์ œ: DP
- ํšŒ๊ณ  ์ž‘์„ฑ์ž: [@Queue-ri](https://github.com/Queue-ri)

## ์ฒด๊ฐ ๋‚œ์ด๋„ ๋ถ„๋ฅ˜
- ๐Ÿ’ฌ: ๋ฏธ๋ถ„๋ฅ˜
- ๐Ÿฐ: EZ
- ๐Ÿ”ฎ: ์œ ์ตํ•ด์š”
- ๐Ÿž: SHIT

## ํ’€์ด ํšŒ๊ณ 
### ๐Ÿ’ฌ ์—ฐ์†ํ•ฉ
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/1912)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 1912
- ํ’€์ด ์‹œ๊ฐ„: 00๋ถ„

#### ๋ฉ”๋ชจ
- `setrecursionlimit` ๊นŒ๋จน์–ด์„œ 3๋ถ„ ๋‚ ๋ฆผ
- DP๋กœ ํ‘ธ๋Š”๋ฐ memoization์„ ์•ˆํ•จ?
- ๋ฌธ์ œ๋Š” `dict()`๋กœ ์บ์‹ฑํ•˜๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ
- ๋‹ค์‹œ ํ‘ธ์‹ญ์‡ผ


### ๐Ÿ’ฌ ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/11053)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 11053
- ํ’€์ด ์‹œ๊ฐ„: 45๋ถ„

#### ๋ฉ”๋ชจ
- `memo` ์ •์˜: `series[i]`๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ์ฆ๊ฐ€์ˆ˜์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด
- ์ฒ˜์Œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ length๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ์žฌ๊ท€ํ–ˆ๋Š”๋ฐ ์ด๋Ÿฌ๋ฉด memo์˜ ์ •์˜์— ๋งž๊ฒŒ ์บ์‹ฑํ•  ์ˆ˜ ์—†์Œ
- ๊ทธ๋ž˜์„œ depth๊ฐ€ ๊นŠ์€ ์ˆœ์œผ๋กœ ์นด์šดํŠธ๋ฅผ ์˜ฌ๋ ค๊ฐ€๋ฉด์„œ return ํ• ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ ์˜ฌ๋ผ๊ฐ€๋„๋ก ๋‹ค์‹œ ์งฌ --> AC

- `dp()` ๋‚ด๋ถ€์—์„œ ์• ์ดˆ์— `i: [0, n)` ๋ฒ”์œ„๋กœ ์ˆœํšŒํ•˜๋Š”๋ฐ base case๋ฅผ <= n ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ํ•จ
- `for j in range(i, n):` --> ์ด๊ฑฐ `i+1` ๋ถ€ํ„ฐ ์ˆœํšŒํ•ด์•ผํ•˜๋Š”ใ„ท (์ฝ”๋“œ ์•ˆ๊ณ ์น˜๊ณ  ํ‘ธ์‹œํ•จ;)


### ๐Ÿ’ฌ ๊ฐ€์žฅ ํฐ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/11055)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 11055
- ํ’€์ด ์‹œ๊ฐ„: 7๋ถ„ 51์ดˆ


### ๐Ÿ’ฌ ๊ฐ€์žฅ ๊ธด ์ง์ˆ˜ ์—ฐ์†ํ•œ ๋ถ€๋ถ„ ์ˆ˜์—ด (small)
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/22857)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 22857
- ํ’€์ด ์‹œ๊ฐ„: ๐Ÿ’ฅ**1์‹œ๊ฐ„ ์ดˆ๊ณผ**

#### ๋ฉ”๋ชจ
- ๋‹น์—ฐํžˆ ์ง„์งœ ์ง€์šฐ๋Š”๊ฑด ๋ฐ”๋ณด์ง“์ด๊ณ  ์นด์šดํŒ…๋งŒ ใ…‡ใ…‡
- ์ฒ˜์Œ์— ์ ํ™”์‹์„ ์ž˜๋ชป ์ •์˜ํ•ด์„œ [์•„์ด๋””์–ด](https://blob-thinking.tistory.com/443) ์ฐธ๊ณ  ํ›„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์„œ AC ๋ฐ›์Œ
- `memo` ์ •์˜: `series[i]`๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ์ง์ˆ˜ ์ฆ๊ฐ€์ˆ˜์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด
- i๊ฐ€ ์ง์ˆ˜๋ฉด i๋ฒˆ์งธ ํ•ญ๊นŒ์ง€ ๋ถ€๋ถ„์ˆ˜์—ด์— ํฌํ•จ๋˜๋ฏ€๋กœ ๊ธธ์ด์— +1 ํ•ด์•ผ๋˜๋Š” ์กฐ๊ฑด ๋ฐœ์ƒ์ด ๊นŒ๋‹ค๋กœ์›€
- ์ง์ˆ˜์ผ๋•Œ๋งŒ +1 ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ max ๊ฐ’ ๋‹ค ์ •ํ•˜๊ณ  ๋‚˜์„œ return ์ง์ „์— +1 ํ•ด์ฃผ๋Š”๊ฑด ์˜ค๋‹ต


### ๐Ÿ’ฌ ์ ํ”„
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/1890)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 1890
- ํ’€์ด ์‹œ๊ฐ„: 30๋ถ„ 12์ดˆ

#### ๋ฉ”๋ชจ
- visited ์ฒ˜๋ฆฌ ์•ˆํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ --> ๋ฆฌ์ŠคํŠธ ํฌ๊ธฐ์—์„œ ํ„ฐ์ง„๊ฒŒ ์•„๋‹ˆ๋ผ ์–ด๋””์„œ ๋ฌดํ•œ์žฌ๊ท€ ๋„๋Š”๋“ฏ
- ๊ทธ๋Ÿผ `recursion limit 10**6 > ๋ฉ”๋ชจ๋ฆฌ์ œํ•œ`์ธ๋“ฏ? ๋ฐ˜๋Œ€๋ฉด RTE ํ„ฐ์กŒ์„ํ…Œ๋‹ˆ๊นŒ
- ๋ฆฌ์ŠคํŠธ ๋Œ€์‹  `defaultdict(lambda:-1)` ํ˜•์‹์˜ `memo` ์‚ฌ์šฉํ• ์ˆ˜๋„
- ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ ๋น„๊ต ๊ฒฐ๊ณผ: `defaultdict`๊ฐ€ ๋” ๊ตฌ๋ฆผ
<li><span style="color:#E335FF"><b>โš ๏ธ์ฃผ์˜</b></span>: ์•ˆ์“ฐ๋Š” import ๋นผ๋‹ˆ๊นŒ 3000KB์™€ 20ms๊ฐ€ ๊ฐ์†Œํ•จ;</li>


### ๐Ÿ’ฌ ํฌ๋„์ฃผ ์‹œ์‹
- ํ”Œ๋žซํผ: ๋ฐฑ์ค€ [[๋ฌธ์ œ๋ณด๊ธฐ]](https://noj.am/2156)
- ๋ฌธ์ œ ๋ฒˆํ˜ธ: 2156
- ํ’€์ด ์‹œ๊ฐ„: 26๋ถ„ 15์ดˆ

#### ๋ฉ”๋ชจ
- 1ํŠธ์— ์•ˆํ’€๋ ค์„œ DP ์„ค๊ณ„ ์ฒจ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•จ
- `dp(i)` --> `i`๋ฒˆ์งธ ํฌ๋„์ฃผ์— ๋Œ€ํ•˜์—ฌ
- `i`๋ฅผ ์„ ํƒ ์•ˆํ•˜๊ณ  ๋‹ค์Œ๊บผ ์„ ํƒ
- `i`๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ๊บผ ์„ ํƒ (๋‹จ, ์ด์ „์— ์—ฐ์†์„ ํƒ ์•ˆํ–ˆ์„๋•Œ (=`prev_status`๊ฐ€ `False`์ผ ๋•Œ))
- `i`๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•œ ์นธ ๊ฑด๋„ˆ๋›ฐ์–ด์„œ ์„ ํƒ (๋‹จ, ์ด์ „์— ์—ฐ์†์„ ํƒ ์•ˆํ–ˆ์„๋•Œ (=`prev_status`๊ฐ€ `False`์ผ ๋•Œ))
- `i`๋ฅผ ์„ ํƒ ์•ˆํ•˜๊ณ  ํ•œ ์นธ ๊ฑด๋„ˆ๋›ฐ๋Š”๊ฑด ๋‹น์—ฐํžˆ `i` ์„ ํƒํ•œ๊ฒŒ ๋” ๋‚˜์œผ๋ฏ€๋กœ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Œ
- ๋”ฐ๋ผ์„œ ์ด 3๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์žฌ๊ท€ ํ˜ธ์ถœํ–ˆ๊ณ  ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•จ
<li><b><span style="font-size:32px">setrecursionlimit ์ข€ ๊ทธ๋งŒ ๊นŒ๋จน์–ด๋ผ</span></b></li>

0 comments on commit 2477215

Please sign in to comment.