โ๏ธ ๋ฌธ์
[๋ฐฑ์ค/BOJ] 2631๋ฒ: ์ค์ธ์ฐ๊ธฐ(https://www.acmicpc.net/problem/2631)
KOI ์ด๋ฆฐ์ด์ง์๋ N๋ช ์ ์์ด๋ค์ด ์๋ค. ์ค๋์ ์ํ์ ๊ฐ๋ ๋ ์ด๋ค. ์ ์๋์ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ๋ฒํธ๊ฐ ์ ํ์๋ ๋ฒํธํ๋ฅผ ์์ด๋ค์ ๊ฐ์ด์ ๋ถ์ฌ์ฃผ์๋ค. ์ ์๋์ ์์ด๋ค์ ํจ๊ณผ์ ์ผ๋ก ๋ณดํธํ๊ธฐ ์ํด ๋ชฉ์ ์ง๊น์ง ๋ฒํธ์์๋๋ก ์ผ๋ ฌ๋ก ์์ ๊ฑธ์ด๊ฐ๋๋ก ํ์๋ค. ์ด๋ ๋์ค์ ๋ณด๋ ์์ด๋ค์ ๋ฒํธ์์๊ฐ ๋ฐ๋์๋ค. ๊ทธ๋์ ์ ์๋์ ๋ค์ ๋ฒํธ ์์๋๋ก ์ค์ ์ธ์ฐ๊ธฐ ์ํด์ ์์ด๋ค์ ์์น๋ฅผ ์ฎ๊ธฐ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ด๋ค์ด ํผ๋์ค๋ฌ์ํ์ง ์๋๋ก ํ๊ธฐ ์ํด ์์น๋ฅผ ์ฎ๊ธฐ๋ ์์ด๋ค์ ์๋ฅผ ์ต์๋ก ํ๋ ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด, 7๋ช ์ ์์ด๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์์๋๋ก ์ค์ ์ ์๋ค๊ณ ํ์.
3 7 5 2 6 1 4
์์ด๋ค์ ์์๋๋ก ์ค์ ์ธ์ฐ๊ธฐ ์ํด, ๋จผ์ 4๋ฒ ์์ด๋ฅผ 7๋ฒ ์์ด์ ๋ค๋ก ์ฎ๊ฒจ๋ณด์. ๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์๊ฐ ๋๋ค.
3 7 4 5 2 6 1
์ด์ , 7๋ฒ ์์ด๋ฅผ ๋งจ ๋ค๋ก ์ฎ๊ธด๋ค.
3 4 5 2 6 1 7
๋ค์ 1๋ฒ ์์ด๋ฅผ ๋งจ ์์ผ๋ก ์ฎ๊ธด๋ค.
1 3 4 5 2 6 7
๋ง์ง๋ง์ผ๋ก 2๋ฒ ์์ด๋ฅผ 1๋ฒ ์์ด์ ๋ค๋ก ์ฎ๊ธฐ๋ฉด ๋ฒํธ ์์๋๋ก ๋ฐฐ์น๋๋ค.
1 2 3 4 5 6 7
์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ 4๋ช ์ ์์ด๋ฅผ ์ฎ๊ฒจ ๋ฒํธ ์์๋๋ก ์ค์ ์ธ์ด๋ค. ์์ ์์์ 3๋ช ์ ์์ด๋ง์ ์ฎ๊ฒจ์๋ ์์๋๋ก ๋ฐฐ์นํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์, 4๋ช ์ ์ฎ๊ธฐ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ ์์ ์์ด๋ฅผ ์ฎ๊ธฐ๋ ๊ฒ์ด๋ค.
N๋ช ์ ์์ด๋ค์ด ์์์ ์์๋ก ์ค์ ์ ์์ ๋, ๋ฒํธ ์์๋๋ก ๋ฐฐ์นํ๊ธฐ ์ํด ์ฎ๊ฒจ์ง๋ ์์ด์ ์ต์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ค ์ ์ถ๋ ฅ ์์
๐ง ๋์ด๋/์์ ์๊ฐ
โ ๋์ด๋: solved.ac ๊ธฐ์ค G4
โ ์์ ์๊ฐ: ์ธก์ X
โ ๊ถ์ฅ ์๊ฐ: 1์๊ฐ 30๋ถ
๐ก ํ์ด
1) ๋ฌธ์ ์ดํด
์ด์ ์ฌ๋ ธ๋ '์์ ๋ฃ๊ธฐ' ๋ฌธ์ ์ ๋์ผํ๊ฒ LIS ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅด๊ฒ ํํํ ๋ฌธ์ ๋ค.
DP ํ ์ด๋ธ ๋ฐ ์ ํ์ ์ ์๋ '๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด' ๋ฌธ์ ๋ฅผ ํ ๋์ ๊ฐ์ง๋ง ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๋ ์กฐ๊ธ ์๊ฐ์ ํด์ผ ํ๋ ๋ถ๋ถ์ด ์์ด ์๋์์ ๊ทธ ๋ถ๋ถ์ ๋ํด์๋ง ์กฐ๊ธ ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค.
2) ์ ์ฒด ์ฝ๋
N = int(input())
children = []
for _ in range(N):
children.append(int(input()))
DP = [1]*N
for i in range(N):
for j in range(i):
if children[i] > children[j]:
DP[i] = max(DP[i], DP[j]+1)
print(N-max(DP))
3) ์ ๋ต ์ถ๋ ฅ ๊ณผ์
print(N-max(DP))
- N-max(DP)
- ์ ํ์์ '์ฃผ์ด์ง ์์ด์ i๋ฒ์งธ ์์๊ฐ ์ด์ ์ j๋ฒ์งธ ์์๋ณด๋ค ํด ๋, DP[i]์ DP[j]+1 ์ค ํฐ ๊ฐ์ผ๋ก DP[i]๋ฅผ ๊ฐฑ์ ํ์ฌ LIS๋ฅผ ์ฐพ์๊ฐ๋ ๊ฒ'์ ์๋ฏธํ๋ค.
- ์ด ๊ณผ์ ์ด ๋๋ ํ์ ๋์จ max(DP) = ์ฃผ์ด์ง ์์ด์์ ์ฐพ์ ์ ์๋ LIS
- ์ค์ธ์ฐ๊ธฐ ๋ฌธ์ ์์ ํ์๋ค์ ์ด๋์ ์ต์ํํ๋ ค๋ฉด ์๋ง์ ์๋ฆฌ์ ์ ํ์๋ค์ ๊ธฐ์ค์ผ๋ก ์ก์ผ๋ฉด ๋๋ค.
- ์๊ธฐ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ์ผ ํ๋ ํ์๋ค์ ์๋ง์ ์๋ฆฌ์ ์ ํ์๋ค ์ฌ์ด์ ์ ์ ํ ๋ผ์์ฃผ๋ฉด ํ์๋ค์ ์ด๋์ ์ต์ํํ ์ ์๊ธฐ ๋๋ฌธ!
4) ์ด๋ ค์ ๋ ์ /๋ฐฐ์ด ์
๐จ ์ด๋ ค์ ๋ ์
- ์์
โ ๋ฐฐ์ด ์
- LIS๋ฅผ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฌด๊ถ๋ฌด์งํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.