๋ฐฑ์ค 2565 ํ์ด์ฌ
https://www.acmicpc.net/problem/2565
2565๋ฒ: ์ ๊น์ค
์ฒซ์งธ ์ค์๋ ๋ ์ ๋ด๋ ์ฌ์ด์ ์ ๊น์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ์ ๊น์ค์ ๊ฐ์๋ 100 ์ดํ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ ํ ์ค์ ํ๋์ฉ ์ ๊น์ค์ด A์ ๋ด๋์ ์ฐ๊ฒฐ๋๋ ์์น์ ๋ฒํธ์ B์ ๋ด๋์ ์ฐ๊ฒฐ๋๋
www.acmicpc.net

์ด๋ฒ ๋ฌธ์ ๋ ์ ๊น์ค์ด ์๋ก ๊ต์ฐจํ์ง ์๊ฒ ์์ ์ผํ๋ ์ ๊น์ค์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ์ฒ์์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ ๊ทผํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค๊ณ ์๊ฐํ๋๋ฐ... ์ญ์ ์๊ณ ๋ฆฌ์ฆ์ ์ข ์ด์ ์ ์ด๊ฐ๋ฉด์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๋ค๋ณด๋ ๊ท์น์ ์ฐพ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ด์ ์ ํ์๋ LIS ๋ฌธ์ :
[CS/์๊ณ ๋ฆฌ์ฆ] - ๋ฐฑ์ค 11053 ํ์ด์ฌ - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด - ๋์ ๊ณํ๋ฒ, LIS ์ ์ฐ์ฅ์ ์์ฉ์ด๋ค.
์ ๊ธธ์ค์ ์ฐ๊ฒฐ ์์์ ์ ๊ธฐ์ค์ผ๋ก ๋์ฐฉ ์ง์ ์ ์ ์ด๋ณด๋ฉด....
{8, 2, 9, 1, 4, 6, 7, 10}
์๋ก ์ ๊ธธ ์ค์ด ๊ต์ฐจํ์ง ์๊ฒ ํ๋ ค๋ฉด... ์ฐ์์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ซ์๊ฐ ํ์ํ๋ค. ์ฆ, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๊ฐ ์ต๋๋ก ๊ฒน์น์ง ์๊ณ ์ฐ๊ฒฐํ ์ ์๋ ์ ๊น ์ค์ด๋ค.
Python ํ์ด
import sys
read = sys.stdin.readline
N = int(read())
lines = [list(map(int, read().split())) for _ in range(N)]
lines.sort(key=lambda x: x[0])
seq = [x[1] for x in lines]
counts = [seq[0]]
for i in range(1, N):
if counts[-1] < seq[i]:
counts.append(seq[i])
else:
idx = 0
for j in range(len(counts)):
if counts[j] < seq[i]:
idx += 1
else:
counts[idx] = seq[i]
break
print(N - len(counts))
- ์ฆ๊ฐํ๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ๋ก์ง์ ์ด์ ๋ฌธ์ ์ ๋๊ฐ๋ค.
- ์ฐจ์ด๊ฐ ์๋ ๋ถ๋ถ์ ์ฐ๊ฒฐ๋๋ ์ ์ด ์ถ๋ฐ์ ์ ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์ผํ๋ค.
- ๊ฒฐ๊ณผ๋ ์ ์ฒด ์ ๊น์ค์์ ์ฆ๊ฐํ๋ ๊ฐ์ฅ ๊ธด ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ๋บ ๊ฐ์ด๋ค.
๋๊ธ