개발 블로그
article thumbnail
Published 2023. 10. 27. 12:11
11256번. 사탕 Algorithm/백준 알고리즘

 

아이디어

상자를 최소한으로 쓰기 위해서는 용량이 큰 상자부터 꽉꽉 채워담아야 한다. 만약 사용한 상자를 모두 다 채워야 한다고 하면 이야기가 다르겠지만 문제에서 상자를 다 채우지 않아도 된다고 했으므로 그리디한 방식으로 문제를 해결하면 된다.

 

 

풀이코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

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

        int T = Integer.parseInt(br.readLine());
        for (int t = 0; t < T; t++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            int J = Integer.parseInt(st.nextToken()); // 사탕의 개수
            int N = Integer.parseInt(st.nextToken()); // 상자의 개수

            int[] boxes = new int[N];
            for (int i = 0; i < N; i++) {
                st = new StringTokenizer(br.readLine());

                int R = Integer.parseInt(st.nextToken());
                int C = Integer.parseInt(st.nextToken());

                boxes[i] = R * C;
            }

            Arrays.sort(boxes);

            int idx = N - 1;
            while (J > 0) {
                J -= boxes[idx--];
            }

            sb.append(N - 1 - idx).append("\n");
        }

        System.out.println(sb);
    }
}

'Algorithm > 백준 알고리즘' 카테고리의 다른 글

1012번. 유기농 배추  (0) 2023.10.27
10211번. Maximum Subarray  (0) 2023.10.27
1629번. 곱셈  (0) 2023.10.26
13699번. 점화식  (0) 2023.10.26
2635번. 수 이어가기  (0) 2023.10.26
profile

개발 블로그

@하얀.손

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!