๋ฌธ์
https://www.acmicpc.net/problem/12015
ํ์ด
# ๋ฐฑ์ค 12015๋ฒ ๋ฌธ์ - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
n = int(input())
arr = list(map(int, input().split()))
stack = [0]
def binary_search(target, start, end):
while start <= end:
mid = (start + end) // 2
if stack[mid] < target:
start = mid + 1
else:
end = mid - 1
return start
for i in arr:
if stack[-1] < i:
stack.append(i)
else:
stack[binary_search(i, 0, len(stack) - 1)] = i
print(len(stack) - 1) # 0์ ๋นผ์ผํ๋ฏ๋ก -1
์ฒ์ ํ์์ ๋ LIS ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ ์ค ๋ชฐ๋๋ค.
๋๋ DP๋ก๋ง ์๊ฐํ๋ค๊ฐ ์ด๋ถํ์์ ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ๋ ์๊ฐํ์ง ๋ชปํด์ ํ์ง ๋ชปํ์๋ค.
์์ด์ ๊ธธ์ด๋ง ๊ตฌํ๋ฉด ๋๋ฏ๋ก ์ด๋ถํ์์ด ๊ฐ๋ฅํ๋ค.
์คํ์ ์๋ก ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ์ ๋งจ ๋ง์ง๋ง ๊ฐ์ด i ๋ณด๋ค ์๋ค๋ฉด ์ฝ์ ํ๊ณ ๊ทธ๋ ์ง ์๋ค๋ฉด
์คํ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ์ด๋ถํ์์ ํ๊ณ ์ธ๋ฑ์ค์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [Gold4] 1339๋ฒ_๋จ์ด ์ํ (0) | 2023.05.15 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [Gold5] 13219๋ฒ_Trains (0) | 2023.05.14 |
๐ฉ [๋ฐฑ์ค] [Python] [Gold4] 1043๋ฒ_๊ฑฐ์ง๋ง (0) | 2023.05.12 |
๐ฉ [๋ฐฑ์ค] [Python] [Gold5] 13023๋ฒ_ABCDE (0) | 2023.05.11 |
๐ฉ [๋ฐฑ์ค] [Python] [Gold3] 1238๋ฒ_ํํฐ (1) | 2023.05.09 |