18353๋ฒ - ๋ณ์ฌ ๋ฐฐ์นํ๊ธฐ
๊ฐ์ฅ ๊ธด ์ค๋ฆ์ฐจ์ ์์ด ๋ฌธ์ ์์ ํ๋ฒ ๊ผฐ ๋ฌธ์ ์
๋๋ค.
๋ถ์์ ํ ์ ์์ผ๋ฉด ์ด๋ ต์ง ์๊ฒ ํ ์ ์์ต๋๋ค.
์ ์์ด์์๋ 2,5,3,2,15 ๋ผ๋ ์ฒดํฌํด๋ ์์ด์ ์ ์ธํ๋ฉด ๋ณ์ฌ์ ์๊ฐ ์ต๋๊ฐ ๋๋๋ก ํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฒดํฌํด ๋ ์์ด์ ์ ์ธํ๋ฉด ๋ญ๊ฐ ๊ท์น์ฑ์ด ๋ณด์ด์ค ๊ฒ๋๋ค. ๋ง์ต๋๋ค. ๋ฐ๋ก ์ต์ฅ ์ฆ๊ฐ ์์ด์
๋๋ค.
ํ๋ง๋๋ก lst๋ฅผ reverse ์ํจ ๋ค์ ์ ์ฒด ์์ด์ ๊ธธ์ด - ์ต์ฅ ์ฆ๊ฐ ์์ด์ ๊ธธ์ด ๋ฅผ ๊ตฌํ ๊ฐ์ด ๊ฒฐ๊ตญ ์ด์ธํด์ผ ํ๋ ๋ณ์ฌ์ ์๊ฐ ๋๋ค๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
N = int(input())
lst = list(map(int,input().split()))
lst = list(reversed(lst))
dp = [1]*len(lst)
lst๋ฅผ ์ ์ธํด์ฃผ๊ณ ๋ค์ง๊ฒ ์ต๋๋ค. ๊ฐฏ์๋ฅผ ์ธ์ผํ๋ฏ๋ก dp๊ฐ์ ์ ๋ถ 1๋ก ์ด๊ธฐํํ๊ฒ ์ต๋๋ค.
for i in range(len(lst)):
maximum = 0
for j in range(i):
์ต์ฅ ๋ถ๋ถ ์์ด์ ๊ตฌํด์ฃผ๊ธฐ ์ํด์ maximum์ ํ๋ ์ ์ธํด์ค๋๋ค.
if lst[i] > lst[j]:
if maximum < dp[j] + 1:
maximum = dp[j] + 1
ํ์ฌ ์กฐ์ฌ์ค์ธ ์ธ๋ฑ์ค๊ฐ ์ด์ ์ ์กฐ์ฌ์ค์ธ ์ธ๋ฑ์ค๋ณด๋ค ํฌ๋ค๋ฉด
์ด์ dp๊ฐ๋ค ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ ( ์ธ๋ฑ์ค ์ ๊น์ง์ ๊ฐ์ฅ ๊ธด ์ต์ฅ ์ฆ๊ฐ ์์ด ๊ธธ์ด ) + 1์ maximum์ ๋์
ํด์ค์๋ค.
dp๊ฐ์ ๊ฐ์ํํ๋ฉด ์ด๋ฌํ ํํ๋ก ๋์ค๊ฒ ๋ฉ๋๋ค.
dp[i] = maximum
๊ทธ๋ฆฌ๊ณ ํด๋น maximum์์ ์ด๋ฏธ ์์ด ๊ธธ์ด + 1 ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์์ผ๋ dp๊ฐ์ ๋ฐ๋ก ๋ฃ์ด์ค์๋ค.
print(len(lst)-max(dp))
๋ง์ง๋ง์ผ๋ก ์ ์ ์ธ๊ธํ๋๋ก ์ ์ฒด ์์ด์ ๊ธธ์ด - ์ต์ฅ ์ฆ๊ฐ ์์ด์ ๊ธธ์ด ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ต์ด ๋์ต๋๋ค.
์๋ง ์๋ฅ์ง์์ ํฉ๊ฒฉํ์ต๋๋ค.
ํ๋ก์ ํธ ๊ฒฝํ์ด ์ ๊ณ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค์ด๋ณด๊ณ ์ถ์ ์ ์ ์ฅ์์ ์๋ง ์ฐ์์์ด ๋๋ค๋ฉด ๋์์ด ์ข์ ๊ธฐํ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ค๋ ฅ์ด ์์ง ๋ฏธํกํ๊ณ , ์๋ง ํฉ๊ฒฉ๋์ง ์์ ๊ฒ์ด๋ผ๋๊ฑธ ์ ์์ง๋ง ์ฌํ ๊ณต๋ถํ ๊ฒ ํ๋์ง ์๋๋ก ์ด์ฌํ ํ์ด๋ณด๊ฒ ์ต๋๋ค.