본문 바로가기
알고리즘/그리디 알고리즘

백준 1092번 : 배 java

by LDY3838 2022. 8. 10.
반응형

이 문제는 정렬을 이용하여 모든 박스를 옮기는 데 걸리는 시간을 구하는 문제입니다.

이 문제를 풀기 위해서는 입력받은 데이터들을 모두 내림차순으로 정렬합니다.

그 후 가장 무거운 무게를 들 수 있는 크레인부터 차례대로 박스를 옮기는 것을 시도합니다.

크레인이 박스를 옮기는 것을 성공하였으면 그 크레인은 이미 사용하였으므로 다음으로 무거운 무게를 들 수 있는 크레인을 이용하여 다음 박스를 옮깁니다.

그리고 그 크레인이 박스를 옮길 수 없다면 그다음 박스를 같은 크레인으로 옮기는 것을 시도합니다.

그리고 마지막 박스까지 순회를 마치거나 모든 크레인을 사용하였다면 다시 가장 무거운 무게를 옮길 수 있는 크레인을 이용합니다.

이 과정을 모든 박스를 옮길 때까지 반복합니다.


import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        List<Integer> crane = new ArrayList<>();

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i = 0; i<N; i++)
            crane.add(Integer.parseInt(st.nextToken()));

        int M = Integer.parseInt(br.readLine());
        List<Integer> box = new ArrayList<>();

        st = new StringTokenizer(br.readLine());
        for(int i = 0; i<M; i++)
            box.add(Integer.parseInt(st.nextToken()));

        //내림차순으로 정렬
        crane.sort(Collections.reverseOrder());
        box.sort(Collections.reverseOrder());

        if(crane.get(0)<box.get(0)){
            System.out.println(-1);
            return;
        }

        int day = 0;
        while(!box.isEmpty()){
            int boxIdx = 0, craneIdx = 0;

            while(craneIdx<N){
                if(boxIdx == box.size())
                    break;
                else if(crane.get(craneIdx) >= box.get(boxIdx)){
                    box.remove(boxIdx);
                    craneIdx++;
                }
                else
                    boxIdx++;
            }

            day++;
        }

        System.out.println(day);
    }
}
반응형

'알고리즘 > 그리디 알고리즘' 카테고리의 다른 글

백준 1080번 : 행렬 java  (0) 2022.08.14
백준 12904번 : A와 B java  (0) 2022.08.11
백준 2212번 : 센서 java  (0) 2022.08.09
백준 2437번 : 저울 java  (0) 2022.08.08
백준 1744번 : 수 묶기 java  (0) 2022.08.05

댓글