We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent f1f2b6b commit a5374caCopy full SHA for a5374ca
Hongjoo/백준/병사배치하기.py
@@ -0,0 +1,27 @@
1
+'''
2
+조건
3
+1. 전투력 -> 내림차순 부분수열
4
+2. 남은 병사들의 수가 최대 = 열외 병사수 최소
5
+# LIS , Dynamic
6
+goal : 남은 병사들의 수가 최대 , 열외하는 병사 수 출력
7
8
+import sys
9
+
10
+nums =int(sys.stdin.readline()) # 수열 길이
11
+soldiers =list( map(int,sys.stdin.readline().split())) # 주어진 수열
12
13
+# DP 테이블 = 1 로 초기화
14
+dp= [ 1 for _ in range(nums)]
15
16
+# 순서를 뒤집어서 'LIS - 최장 증가 부분 수열' 문제로 변환
17
+soldiers.reverse() # goal : 내림차순 -> 오름차순
18
19
+# 가장 긴 오른차순 부분 수열 (LIS) 알고리즘 수행
20
21
+for i in range(1, len(soldiers)) :
22
+ for j in range(0,i) :
23
+ if soldiers[j] < soldiers[i] : # 오름차순 만족
24
+ dp[i] = max(dp[j]+1 , dp[i]) # i번 병사가 열외 x , 열외 o
25
26
+# 열외하는 병사 최소 수
27
+print(nums - max(dp))
0 commit comments