[백준/BOJ]1092. 배(java) [Gold 5]

jychan99·2023년 8월 11일
0

문제출처 : https://www.acmicpc.net/problem/1092

code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();
    static List<Integer> boxes;
    static int result=0;

    public static void main(String args[]) throws IOException{
        int N = Integer.parseInt(br.readLine());
        String temp1[]=br.readLine().split(" ");
        Integer [] crane = new Integer[N];
        for(int i=0;i<N;i++){
            crane[i]=Integer.parseInt(temp1[i]);
        }

        int M = Integer.parseInt(br.readLine());
        boxes = new ArrayList<>();
        String temp2[]=br.readLine().split(" ");
        Integer [] box = new Integer[M];
        for(int i=0;i<M;i++){
            box[i] = Integer.parseInt(temp2[i]);
            boxes.add(box[i]);
        }

        Arrays.sort(crane,Collections.reverseOrder());
        boxes.sort(Collections.reverseOrder());

        if(crane[0]<boxes.get(0)) {
			System.out.println(-1);
			return;
		}else{
            while(!boxes.isEmpty()){
                for(int i=0;i<N;i++){
                    for(int j=0;j<boxes.size();j++){
                        if(crane[i]>=boxes.get(j)){
                            boxes.remove(j);
                            break;
                        }
                    }
                }
                result++;
            }
            System.out.println(result);
        }
        br.close();
    }
}

시간초과때문에 애를먹었는데, 알고리즘자체는 별로 어렵지않았던것 같다.

크레인과 박스모두 내림차순으로 정렬한다음, 가장큰 크레인과 가장큰 박스를 비교해서 옮길수없다면 -1을 출력한다.
그게 아니면, 가능한순서대로 옮기고, ArrayList에서 삭제해주면 된다.
크레인과 박스모두 arraylist로 받았을때 시간초과가났는데, 크레인은 그냥 배열로, 박스는 arraylist로 받으니까 시간초과에서 통과되었다. 진짜 간당간당하게 통과된것같은느낌이다...

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글