-
[๋ฐฑ์ค] 2631 ์ค์ธ์ฐ๊ธฐ with PythonPS 2022. 3. 18. 00:09728x90๋ฐ์ํ
๐ BOJ 2631 ์ค์ธ์ฐ๊ธฐ
๐ก ์กฐ๊ฑด
์ ์๋์ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ๋ฒํธ๊ฐ ์ ํ์๋ ๋ฒํธํ๋ฅผ ์์ด๋ค์ ๊ฐ์ด์ ๋ถ์ฌ์ฃผ์๋ค.
์ ์๋์ ์์ด๋ค์ ํจ๊ณผ์ ์ผ๋ก ๋ณดํธํ๊ธฐ ์ํด ๋ชฉ์ ์ง๊น์ง ๋ฒํธ์์๋๋ก ์ผ๋ ฌ๋ก ์์ ๊ฑธ์ด๊ฐ๋๋ก ํ์๋ค.
์ด๋ ๋์ค์ ๋ณด๋ ์์ด๋ค์ ๋ฒํธ์์๊ฐ ๋ฐ๋์ด ๋ค์ ๋ฒํธ ์์๋๋ก ์ค์ ์ธ์ฐ๊ธฐ ์ํด์ ์์ด๋ค์ ์์น๋ฅผ ์ฎ๊ธฐ๋ ค๊ณ ํ๋ค.
์์ด๋ค์ด ํผ๋์ค๋ฌ์ํ์ง ์๋๋ก ํ๊ธฐ ์ํด ์์น๋ฅผ ์ฎ๊ธฐ๋ ์์ด๋ค์ ์๋ฅผ ์ต์๋ก ํ๋ ค๊ณ ํ๋ค.
์์ด๋ค์ ์ N์ 2 ์ด์ 200 ์ดํ์ ์ ์์ด๋ค.
๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin n = int(stdin.readline()) num = [int(stdin.readline()) for _ in range(n)] dp = [0 for _ in range(n)] for i in range(n): dp[i] = 1 for j in range(i): if num[i] > num[j]: dp[i] = max(dp[i], dp[j] + 1) lis = 0 lis = max(lis, max(dp)) answer = n - lis print(answer)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
7 3 7 5 2 6 1 4
์คํ๊ฒฐ๊ณผ
4
โจ๏ธ ๋ฌธ์ ํ์ด
๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐ ํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์ ๋ ฅ๋ฐ์ ์์ด๋ค์ ์์๋ฅผ ์ ์งํ๊ณ ์ซ์๋ฅผ ๋ฝ์์ ๋, ์ฆ๊ฐํ๋ ์์ด์ธ๋ฐ ๊ฐ์ฅ ๊ธด ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
N๋งํผ ์ํํ๋ฉด์ i๋ฒ์งธ ์์ด๋ฅผ ์ด์ ์ ์์ด์ ๋ฒํธ๋ฅผ i-1๋ฒ์งธ ์์ด์ ์ซ์์ ๋น๊ตํด
dp[i] ๋ฒ์งธ ์์ด์ ๋ฒํธ์ dp[j]+1 ์ ์ซ์ ์ค ํฐ๊ฑธ dp[i]์ dp ๋ฆฌ์คํธ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค.dp ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์ ๋ต์ ์ถ๋ ฅํ ๋ณ์ lis์ max() ํจ์๋ก ํฌ๊ธฐ๋ฅผ ๋น๊ตํ ํ ์ ์ฅํฉ๋๋ค.
answer ๋ณ์์ n๋ช ์ ์์ด - lis ๊ฐ์ ์ ์ฅํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
n๋ช ์ ์์ด ์ค, ์ด๋ํ๋ ์์ด์ ์๋ lis ์ ๋๋ค.
๐พ ๋๋์
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ์ ์ง์ง ๊ทนํ์ด๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 5671 ํธํ ๋ฐฉ ๋ฒํธ with Python (0) 2022.03.18 [๋ฐฑ์ค] 2636 ์น์ฆ with Python (0) 2022.03.18 [๋ฐฑ์ค] 1758 ์๋ฐ์ ๊ฐํธ with Python (0) 2022.03.17 [๋ฐฑ์ค] 12788 ์ 2ํ IUPC๋ ์ ๊ฐ์ต๋ ์ ์์๊น? with Python (0) 2022.03.16 [๋ฐฑ์ค] 11899 ๊ดํธ ๋ผ์๋ฃ๊ธฐ with Python (0) 2022.03.16