-
반응형
상자넣기
풀이
일렬로 정렬된 상자들에서 앞의 상자 크기가 뒤에보다 작으면, 뒤에 상자에 넣어 정리하는 문제였다.
dp로 푸는게 적합하겠다는 생각을 하고 코드를 작성했다.
박스를 순차적으로 탐색하면서, 이전의 박스들 중 가장 많이 저장된 박스에 담는 dp를 만들었다.
이때, 앞의 상자 크기가 뒤에 상자 크기보다 작아야한다는 조건을 걸어서 저장하면서, 쉽게 답을 구할 수 있었다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BoxPackaging_1965 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] numArr = new int[n]; StringTokenizer st = new StringTokenizer(br.readLine()); for(int i=0; i<n; i++) { numArr[i] = Integer.parseInt(st.nextToken()); } System.out.println(solution(numArr,n)); br.close(); } private static int solution(int[] numArr, int n) { int answer =0; int[] dp = new int[n]; for(int i=0; i<n; i++) { for(int j =0; j<i; j++) { if(numArr[i] > numArr[j]) { dp[i] = Math.max(dp[i], dp[j]); } } answer = Math.max(answer, ++dp[i]); } return answer; } }
반응형'알고리즘 > 백준' 카테고리의 다른 글
BOJ) 케이크 자르기 (0) 2020.06.23 BOJ) 수 이어 쓰기 2 (3) 2020.06.23 BOJ) 방 번호 (0) 2020.06.23 BOJ) 블랙잭 (0) 2020.06.23 BOJ) 연결 요소의 개수 (0) 2020.06.22