ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준]1092: 배 - JAVA
    문제풀이/백준 2021. 4. 30. 19:43

    [백준]1092: 배

    www.acmicpc.net/problem/1092

     

    1092번: 배

    첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보

    www.acmicpc.net

    풀이

    크레인이 무게 제한과 박스의 무게를 arraylist로 받았다. 그 다음 내림차순 정렬을 한 후 박스를 차례대로 하나씩 처리해 주었다.

     

    현재 크레인에 박스를 담을 수 있다면 담았다고 생각하고 박스를 제거해 주었다. 현재 박스를 담을 수 없다면 다음 박스를 확인하며 담을 수 있는 박스를 찾아 제거해 주었다.

     

    만약 제일 무거운 박스가 크레인의 무게 제한으로 인해 어떤 크레인으로도 박스를 옮길 수 없다면 -1을 출력해 주었다.

     

    그리디한 정렬 문제로 어렵지 않은 수준이었다!

     

    코드

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import java.util.*;
     
    public class Main {
        
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
     
            int n = scan.nextInt();
            
            ArrayList<Integer> crane = new ArrayList<>();
            for(int i = 0; i < n; i++) {
                crane.add(scan.nextInt());
            }
            Collections.sort(crane, Collections.reverseOrder());
            
            int m = scan.nextInt();
            ArrayList<Integer> box = new ArrayList<>();
            for(int i = 0; i < m; i++) {
                box.add(scan.nextInt());
            }
            Collections.sort(box, Collections.reverseOrder());
            
            if(crane.get(0< box.get(0)) System.out.println("-1");
            else {
                int time = 0;
                while(!box.isEmpty()) {
                    int idx = 0;
                    for(int i = 0; i < crane.size();) {
                        if(idx == box.size()) break;
                        else if(crane.get(i) >= box.get(idx)) {
                            box.remove(idx);
                            i++;
                        }
                        else idx++;
                    }
                    time++;
                }
                System.out.println(time);
            }
        }
    }    
     
    cs

    '문제풀이 > 백준' 카테고리의 다른 글

    [백준]2660: 회장뽑기 - JAVA  (0) 2021.05.01
    [백준]2493: 탑 - JAVA  (0) 2021.05.01
    [백준]2056: 작업 - JAVA  (0) 2021.04.30
    [백준]10282: 해킹 - JAVA  (0) 2021.04.29
    [백준]4358: 생태학 - JAVA  (0) 2021.04.29

    댓글

Designed by Tistory.