일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바
- SWEA 15612번
- 백준 1253번
- ubuntu
- HUFS 모각코 캠프
- 백준 2512번
- 백준 1331번
- 백준
- SQL
- 그래프
- 명품자바
- 백준 16918번
- 백준 1987
- 백준 17451번
- MySQL
- 다이나믹 프로그래밍
- 다이나믹프로그래밍
- AWS
- 백준 18310번
- 그리디
- 모각코
- Python
- 백준 3085번
- 깃헙
- 머신러닝과 딥러닝
- react
- javascript
- 백준 15787번
- 알고리즘
- java_programming
Archives
- Today
- Total
차곡차곡
[BOJ/Java] 백준 18353번 - 병사 배치하기 본문
백준 #18353 병사 배치하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int[] power = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
power[i] = Integer.parseInt(st.nextToken());
}
int[] dp = new int[N];
dp[0] = 1;
int max = 1;
for (int i = 1; i < N; i++) {
dp[i] = 1;
for (int j = i-1; j >= 0; j--) {
if (power[i] >= power[j]) continue;
dp[i] = Math.max(dp[i], dp[j]+1);
max = Math.max(max, dp[i]);
}
}
System.out.println(N - max);
} // end of main
} // end of class
dp로 풀었다. dp에는 앞에서부터 자기 자리에 오기까지 배치할 수 있는 병사의 최대 수를 저장하게 된다. 앞에 있는 병사가 자신보다 전투력이 강하다면 그 병사 뒤에 설 수 있는 것으로 해당 병사까지의 병사 최대 수 + 1을 저장해준다. 즉 dp[i] = dp[i-1]+1 이라는 점화식을 세울 수 있는데, 앞에 있는 병사들 중 어떤 병사의 뒤에 섰을 때 최대 수인지 모두 비교해봐야 하기 때문에 이중 for문을 통해 모든 수들을 비교해준다. 따라서 dp[i] = Math.max(dp[i], dp[j]+1) 라는 식을 세울 수 있다. 이때, 배치할 수 있는 병사의 최솟값은 자기 혼자 서있을 경우인 1이기 때문에 for문을 돌 때 dp[i] = 1로 초기화가 필요하다.
'CS > Algorithm' 카테고리의 다른 글
[BOJ/Java] 백준 3184번 - 양 (2) | 2023.08.21 |
---|---|
[BOJ/Java] 백준 5567번 - 결혼식 (0) | 2023.08.18 |
[BOJ/Java] 백준 16401번 - 과자 나눠주기 (0) | 2023.08.18 |
[BOJ/Java] 백준 7795번 - 먹을 것인가 먹힐 것인가 (0) | 2023.08.18 |
[BOJ/Java] 백준 1987번 - 알파벳 (0) | 2023.08.18 |
Comments