🐸 문제 정보
2631번: 줄세우기
KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기
www.acmicpc.net
🤖 알고리즘
DP
⏱️ 풀이 시간
failed
📝 풀이
오랜만에 failed...
문제를 보고 DP라는 것은 알았으나, 도저히 점화식과 아이디어가 떠오르지 않았다.
그리고 결국 검색해서 풀이를 살펴보니 LIS(가장 긴 증가하는 부분수열) 문제라는 것을 깨달았다.
유사한 문제는 이전에도 풀어본 적 있는데, 이 문제가 도대체 왜 LIS 문제지? 라고 생각했으나
이 문제의 입력에서 도출되는 가장 긴 증가하는 부분 수열은 곧 제대로 된 위치에 있는 아이들과 같기 때문에 모든 아이의 수에서 제대로 된 위치에 있는 아이의 수를 빼주면 정답이라는 것을 알게되었다.
유사한 문제는 아래에 있다.
11053번: 가장 긴 증가하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
🧑💻 나의 답
# pypy3
import sys
input = sys.stdin.readline
n = int(input().rstrip())
nums = [int(input().rstrip()) for _ in range(n)]
dp = [1] * n
for i in range(n):
for j in range(i):
if nums[j] < nums[i]:
dp[i] = max(dp[j] + 1, dp[i])
print(n - max(dp))
'PS > 문제풀이' 카테고리의 다른 글
백준 22233 가희와 키워드 Python (0) | 2024.01.23 |
---|---|
백준 13144 List of Unique Numbers Python (0) | 2024.01.22 |
백준 5972 택배 배송 Python (1) | 2024.01.22 |
백준 2531 회전 초밥 Python (0) | 2024.01.22 |
백준 3758 KCPC Python (1) | 2024.01.22 |