Skip to content

Commit a5374ca

Browse files
committed
[BOJ]#18353_병사배치하기 / Silver / 실패
https://www.acmicpc.net/problem/18353
1 parent f1f2b6b commit a5374ca

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)