<Algorithm> 213. 조짜기(BOJ)
by BFine반응형
1. 2229번 조짜기(BOJ)
사용 알고리즘 : DP
-
처음에
209. 파일합치기(BOJ) 이문제와 유사하다는 느낌을 받아 비슷한 방법으로 풀어보았다. 차이는 이문제는 기준점으로 부터 처음까지 탐색하여 결과를 내기 떄문에 1차원 DP만으로 풀 수 있었다.
문제에 대한 접근&생각
- 조를 만드는데 가장 작은값과 큰값의 차이가 큰 경우 -> 결과조건!
- 너무 많은 경우의 수 -> 완전탐색X, DP!
- 나이순으로 정렬되어 최대한 나이차이가 적게 나게 조를 구성 -> 순차적으로 조를 구성 -> 기준을 잡고 역탐색!
코드
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 31 32 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n+1]; int[] dp = new int[n+1]; /*************************** * 이중반복을 통해 처음부터 반복하고 * 다른 반복은 앞의 반복의 인수를 * 기준으로 삼아서 반대로 반복한다. * 이떄 DP를 이용하여 값을 누적하고 * 최댓값인지 판단하여 값을 변경한다. ***************************/ for(int i = 1; i <= n; i++) { arr[i] = sc.nextInt(); } for(int i = 1; i <= n; i++) { int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int j = i; j > 0; j--) { max = Math.max(max, arr[j]); min = Math.min(min, arr[j]); dp[i] = Math.max(dp[i], dp[j-1]+(max-min)); } } System.out.println(dp[n]); } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 215. 가장 큰 정사각형 찾기(Programmers) (0) | 2019.06.05 |
---|---|
<Algorithm> 214. 줄어들지않아(BOJ) (0) | 2019.06.05 |
<Algorithm> 212. 제곱수의 합(BOJ) (0) | 2019.05.31 |
<Algorithm> 211. 동전(BOJ) (0) | 2019.05.31 |
<Algorithm> 210. 줄세우기(BOJ) (0) | 2019.05.31 |
블로그의 정보
57개월 BackEnd
BFine