*문제 출처는 백준에 있습니다.
문제 제목: 가장 긴 증가하는 부분 수열 4 / 14002번 (골드 4단계)
문제 사이트: https://www.acmicpc.net/problem/14002
문제 설명
나의 풀이
n = int(input())
data = list(map(int, input().split()))
dp = [1] * (n + 1)
for i in range(len(data)):
for j in range(i):
if data[j] < data[i]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
x = max(dp)
# 결과 값을 담을 배열
result = []
for i in range(n-1, -1, -1):
if dp[i] == x:
result.append(data[i])
x -= 1
result.reverse()
for r in result:
print(r, end=' ')
※ 알아야 할 것
https://www.acmicpc.net/problem/12015 이 문제랑 다르다.
이 풀이는 1번째 코드에서 수열이 증가하면 증가하는 길이만큼 출력한다.
그리고 그 최대 증가하는 수들은 x 값을 가지고 있을 테니깐 뒤에서부터 x 값과 같은 수를 result에 넣고 오름차순으로 정렬해서 하나씩 출력했다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 연구소 / 14502번 / Python (0) | 2024.09.02 |
---|---|
백준 / 좋다 / 1253번 / Python (1) | 2024.09.02 |
백준 / 회의실 배정 / 1931번 / Python (0) | 2024.08.27 |
백준 / 그룹 단어 체커 / 1316번 / Python (0) | 2024.08.26 |
백준 / 최솟값 찾기 / 11003번 / Python(PyPy3 제출) (0) | 2024.08.23 |