본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 12981번 공 포장하기

by 현장 2026. 2. 10.

-Code

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

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

        int rCnt = Integer.parseInt(st.nextToken());
        int gCnt = Integer.parseInt(st.nextToken());
        int bCnt = Integer.parseInt(st.nextToken());
        // 3개의 색 모두 다 넣은 경우
        int diffBoxCnt = Math.min(rCnt, Math.min(gCnt, bCnt));
        // 위의 수가 빠진 총 갯수
        rCnt -= diffBoxCnt;
        gCnt -= diffBoxCnt;
        bCnt -= diffBoxCnt;
        // 3개씩 넣은 박스 총 갯수
        int total = diffBoxCnt + rCnt / 3 + gCnt / 3 + bCnt / 3;
        // 나머지 계산을 위한 계산
        rCnt %= 3;
        gCnt %= 3;
        bCnt %= 3;
        // 나머지 필요한 박스 구하기
        int remain = 0;
        int sum = rCnt + gCnt + bCnt;
        if (sum > 0) {
            remain = 1;
        }
        if (sum >= 3) {
            remain = 2;
        }
        System.out.println(total + remain);
    }
}

3개의 수를 1개씩 넣은 경우와 그걸 빼서 계산하여 올림 처리로 처음에 풀었습니다.

문제는 이렇게 되면 각 개수가 섞여서 틀리게 되어서 각각 3개씩 넣는 방식과 나머지를 계산하라는 힌트로 다시 짰지만 나머지 계산에서 문제가 한 번 더 생겼습니다. 나머지 계산에서 각 2개와 1개를 가진 경우 2개 박스로 계산되도록 짜게 되어서 해당 부분을 총개수에 따라 if문을 다시 짜서 해결하게 되었습니다.