swea 3307 ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด
์ฌ์ฉ์ธ์ด : PYTHON
ํ์ด
๋ฐฑ์ค์์ ํ ๋ฒ ํ์ด๋ฅผ ํ๋ ๋ฌธ์ ์๋ค
dp๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ ํ๋๋ฐ ์ ํ์์ ์ด๋ป๊ฒ ์ธ์์ผ ํ ์ง ์ ์๊ฐ์ด ๋์ง ์์๋ค.
์ ์ ํ์์ ์ธ์ฐ์ง ๋ชปํ๋์ง ํ์ด๋ฅผ ๋ณด๊ณ ์์๋ค.
์ด ๋ฌธ์ ๋ 0~n๊น์ง ์ฐจ๋ก๋๋ก dp๋ฆฌ์คํธ๋ฅผ ์ฑ์ด๋ค dp[n-1]
์ด ์ ๋ต์ด ๋๋๊ฒ์ด ์๋ max(dp)๊ฐ ์ ๋ต์ด๊ธฐ ๋๋ฌธ์ด์๋ค.
dp[i] ๋ l[i] (์ ๋ ฅ์ผ๋ก ๋ฐ๋ ์์ด) ๋ฅผ ์ฌ์ฉํ์ ๋ ์์ฑ๋ ์ ์๋ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด์ ๊ธธ์ด์ด๋ค
0 <= i < N
์ผ ๋ dp[i]
๋ (0 <= j < i)
์ผ๋ l[j] < l[i]
์ธ dp[j]
๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ + 1 ์ด๋ค.
๊ทธ๋ฌํ ๊ฐ์ด ์๋ค๋ฉด 1์ ๋ฃ๋๋ค. (์๊ธฐ ์์ )
๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
ํ์์ ํ์๋ dp์ ๋ฐฉ์๊ณผ ์ ๊ทผ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ ๋ง์ด ํท๊ฐ๋ฆฐ๋ค.
์์ง ์๊ฒ ์ ๊ธฐ์ตํด์ผ๊ฒ ๋ค.
์ฝ๋
def find_prev(n): # ์ธ๋ฑ์ค๊ฐ i < n ์ธ dp๋ฆฌ์คํธ์์ l[i] < l[n]์ธ dp[i]๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํ
answer=[0]
for j in range(n):
if l[j]<l[n]:
answer.append(dp[j])
return max(answer)
def solve():
for p in range(N):
dp[p]=find_prev(p)+1
T=int(input())
for i in range(T):
N=int(input())
l=list(map(int,input().split()))
dp=[0]*N
solve()
print(dp)
print('#{} {}'.format((i+1),max(dp)))
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea 1868-ํ์ด์ฌ] ํํํํ ์ง๋ขฐ์ฐพ๊ธฐ (0) | 2023.06.22 |
---|---|
[swea 3304-ํ์ด์ฌ]์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด (0) | 2023.06.21 |
[swea 4615-ํ์ด์ฌ]์ฌ๋ฏธ์๋ ์ค์ ๋ก ๊ฒ์ (0) | 2023.06.21 |
[swea 1216-ํ์ด์ฌ]ํ๋ฌธ2 (0) | 2023.06.21 |
[swea 2814-ํ์ด์ฌ]์ต์ฅ ๊ฒฝ๋ก (0) | 2023.06.21 |