Algorithm Problem/Python

[python] SWEA - 3307. 졜μž₯ 증가 λΆ€λΆ„ μˆ˜μ—΄

deo2kim 2020. 12. 19. 20:45
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • D3 | DP

πŸ’¨ [python] λ°±μ€€ - 11055. κ°€μž₯ 큰 증가 λΆ€λΆ„ μˆ˜μ—΄

πŸ’¨ 각 μˆ«μžλ§ˆλ‹€ μ΄μ „μ˜ μˆ«μžμ™€ λΉ„κ΅ν•˜λ©΄μ„œ 점점 길이λ₯Ό 늘렀 λ‚˜κ°„λ‹€.

πŸ’»μ†ŒμŠ€ μ½”λ“œ

# μž…λ ₯
T = int(input())
Ns = []
for tc in range(T):
    N = int(input())
    numbers = list(map(int, input().split()))
    Ns.append((N, numbers))

# 풀이 - DP
results = []
for tc in range(T):
    N, numbers = Ns[tc]
    # λ‘λ²ˆμ§Έ λΆ€ν„° λκΉŒμ§€
    # μžμ‹ μ˜ μ•žμͺ½μ˜ μˆ«μžλ“€μ„ 탐색
    # ν˜„μž¬ μžμ‹ μ΄ λͺ‡κ°œμ˜ μ—°μ†λœ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μΈμ§€ 체크
    # μ΄ˆκΈ°ν™”: μžμ‹  혼자 μ΄λ―€λ‘œ 1둜 μ΄ˆκΈ°ν™”
    dp = [0] * N
    dp[0] = 1
    for i in range(1, N):
        for j in range(i - 1, -1, -1):
            # λ§Œμ•½ i 의 μˆ«μžλ³΄λ‹€ j 의 μˆ«μžκ°€ μž‘μœΌλ©΄ μ¦κ°€ν•˜λŠ” μˆ˜μ—΄μž„
            if numbers[i] > numbers[j]:
                dp[i] = max(dp[i], dp[j])
        dp[i] += 1

    results.append(max(dp))

# 좜λ ₯
for tc in range(T):
    print(f'#{tc + 1} {results[tc]}')
 

πŸ“•λ¬Έμ œ 확인

좜처: SW Expert Academy

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

 

λ°˜μ‘ν˜•