본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2631 줄세우기

by Alan_Kim 2023. 3. 20.
728x90
반응형

https://www.acmicpc.net/problem/2631

 

2631번: 줄세우기

KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기

www.acmicpc.net

 

문제 해결

  •  LIS (Long Increase sequence) 구하는 문제
  •  가장 긴 증가하는 수열이 만들어 진 부분 수열을 구한다음 그 원소들을 빼고 나머지를 필요한 곳으로 옮기면 되는 것이다.

 

CODE

import sys
input = sys.stdin.readline

n = int(input())
A = [0]+[int(input()) for _ in range(n)]
dp = [0 for _ in range(n+1)]
M = 0 # 최대 증가 길이 수열 (LIS)
for i in range(1,n+1):
    for j in range(1,i):
        if A[i] > A[j]:
            M = max(M,dp[j])
    dp[i] = M + 1 # 원소 i까지 포함해야하므로
    M = 0 # reset
print(n-max(dp)) # 이미 만들어진 LIS빼고 나머지 원소를 옮기면 된다.

 

728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 1092 배  (0) 2023.03.21
[python] 백준 1495 기타리스트  (0) 2023.03.20
[python] 백준 15683 감시  (0) 2023.03.19
[python] 백준 1057 토너먼트  (0) 2023.03.19
[python] 백준 2468 안전 영역  (0) 2023.03.19

댓글