Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준 14499
- 백준 2302
- docker
- 코테
- CS
- 네이버
- 운영체제
- 후위 표기식
- 프로그래머스
- 증가하는부분수열
- 도커
- 파이썬
- 스레드
- 프로세스
- 백준
- 백준 2529
- CI/CD
- Spring
- 백준 1120
- 자바스크립트
- 스프링
- 백트래킹
- 다익스트라
- 락
- 백준 10819
- 백준 파이썬
- Spring Security
- 9465 스티커
- 백준 15686
- 코딩테스트
Archives
- Today
- Total
개발
[백준] 14002 가장 긴 증가하는 부분 수열 4 (파이썬) 본문
이전에 포스팅 했던 11779번과 같은 방법으로 dp값이 증가할 때 몇번째에서 왔는지를 저장하고 역순으로 따라가면 되는 문제다.
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
dp = [1 for _ in range(n+1)]
route = [-1 for _ in range(n+1)]
for i in range(n):
for j in range(i):
if arr[i] > arr[j]:
tmp = dp[i]
dp[i] = max(dp[i], dp[j]+1)
if dp[i] != tmp:
route[i] = j
idx = dp.index(max(dp))
dq = deque([])
while idx >= 0:
dq.appendleft(arr[idx])
idx = route[idx]
print(max(dp))
while dq:
print(dq.popleft(), end=" ")'알고리즘 > 문제' 카테고리의 다른 글
| [백준] 2302 극장 좌석 (파이썬) (0) | 2022.07.20 |
|---|---|
| [백준] 9465 스티커 (파이썬) (0) | 2022.07.20 |
| [백준] 11779 최소비용 구하기2 (파이썬) (0) | 2022.07.19 |
| [백준] 1753 최단거리(파이썬) (0) | 2022.07.18 |
| [백준] 14502 연구소(파이썬) (0) | 2022.07.17 |