[Baekjoon/๐ฅSilverโ ก] 11053: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
Intro
- ์ฃผ์ด์ง ์์ด์์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ๐โโ๏ธ
-
๐โโ๏ธ ์ฃผ์ํ ์
-
๋จ์ํ ์ด์ ์๋ณด๋ค ํฐ์ง๋ฅผ ํ๋จํ๋ฉฐ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ์นด์ฐํธํ๋ ๋ฐฉ์
- โ40 50 10 30 40 60โ์์์ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ โ10 30 40 60โ์ด๋ค.
- ์ ๋ฐฉ์์ ์ ์ฉํ๋ค๋ฉด โ40 50 60โ์ด ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ด ๋๊ฒ ๋๋ค.
-
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ์ ๊ทผํด์ผ ํ ๊น?
-
ํด๋น ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๊ฐ ์ ์ฉํด์ผ ํ๋ ๋ฐฉ์์ dp์ด๋ค.
- ํด๋น ์์น์ ์๊ฐ ๋ง์ง๋ง ์๊ฐ ๋๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ๋ฐฉ์
(์ฌ๊ธฐ๊ฐ ํต์ฌ!๐)
- ์์ ๋ณด๋ค ์์ ์ ์ ์ค์์ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ฐ๋ ์๋ฅผ ๊ตฌํ๋ค.
- ํด๋น ์์ด์ ์์ ์ ์ถ๊ฐํจ์ผ๋ก์จ ์๊ธฐ๊ฐ ๋์์ธ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ค.
- ํด๋น ์์น์ ์๊ฐ ๋ง์ง๋ง ์๊ฐ ๋๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ๋ฐฉ์
โ10 20 10 30 20 50โ์ ์์ ๊ณผ์ ์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Algoritm๐ฉโ๐ป
- ์ ๋ฐฉ์์ ์ ์ฉํด ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํด๋ณด์.
#22.01.03
#๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
import sys
l = int(input())
nums = list(map(int, sys.stdin.readline().rstrip().split()))
# ๊ฐ ์๊ฐ ๋์๊ฐ ๋๋ ์์ด์ ๊ธธ์ด๋ฅผ ๋ชจ๋ 1(์์ด์ ์๊ธฐ ์์ ๋ง ์กด์ฌ)๋ก ์ด๊ธฐํ
dp = [1 for i in range(l)]
for i in range(1, l):
# ์์ ์กด์ฌํ๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ๋ํ๋
m = 1
for j in range(0, i):
# ์์ ๋ณด๋ค ์์ ์๋ฅผ ์ฐพ์
if nums[i] > nums[j]:
if m < dp[j]+1:'
# ์์ ์กด์ฌํ๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด + ์์
m = dp[j]+1
dp[i] = m
# ๊ฐ ์๋ค์ ๋์๋ก ํ๋ ๋ถ๋ถ ์์ด ๊ฐ์ฅ ๊ธด ๊ธธ์ด๋ฅผ ์ถ๋ ฅ
print(max(dp))
๐ฉ ์ค๋๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ํ์๋๋ ๊ฐ๋จํ ๋ฌธ์ ๋ ์ด๋ ต๊ฒ ๋๊ปด์ก๋คใ ใ ..
๊พธ์คํ ํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ์ง ์ค๋ ๋ค์ ํ ๋ฒ ๊นจ๋ฌ์๋ค. ์ค๋๋ถํฐ ๋ค์ ์์์ด๋ค!
๊ทธ๋ผ ์ด๋ง!
๋! ~(หโพห~)
๋๊ธ๋จ๊ธฐ๊ธฐ