
-Code
import java.io.*;
import java.util.*;
public class BOJ3213 {
static Map<String, Integer> pizzaSizeMap = Map.of(
"1/4", 0,
"1/2", 1,
"3/4", 2
);
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int friendCnt = Integer.parseInt(br.readLine());
// 각 친구의 피자 먹는 양 받기
int[] sizeCnt = new int[3];
for (int i = 0; i < friendCnt; i++) {
String pizzaSize = br.readLine();
sizeCnt[pizzaSizeMap.get(pizzaSize)]++;
}
int cnt = sizeCnt[2];
// 1/2와 1/4 계산을 위한 나머지
int remain = Math.max(0, sizeCnt[0] - sizeCnt[2]);
// 1/2의 사이즈로 피자 갯수 추가
cnt += sizeCnt[1] / 2;
// 만약 1/2사이즈가 남아있는 경우
if (sizeCnt[1] % 2 == 1) {
cnt++;
// 나머지에 값이 있으면 계산
remain = Math.max(remain - 2, 0);
}
// 4명당 1판이므로 나머지 았으면 추가
int answer = cnt + (remain + 3) / 4;
System.out.println(answer);
}
}
처음에는 주어진 값의 3개를 소수로 변경하여 합산 후 계산하는 방식을 택하려 했으나, 1/2 한 명과 1/4 세 명인 경우 조각이 남았는데 모양이 안 맞아서 못 주는 경우가 생길 수 있었습니다.
그래서 하나하나 계산을 해줘야 했고 가장 큰 크기인 3/4의 개수로 피자 개수를 일단 잡고 나머지를 이용해 1/2와 1/4 사이즈를 먹을 때 계산을 해보라는 힌트를 받고 구현했습니다. 그러나 한 가지 추가적인 문제인 4인 1판이므로 이 부분을 간과하였고 해당 부분을 추가하여 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 2004번 조합 0의 개수 (0) | 2026.03.10 |
|---|---|
| [백준/Java] 11972번 Contaminated Milk (0) | 2026.03.10 |
| [백준/Java] 33967번 SCSC 기차 놀이 (0) | 2026.03.08 |
| [백준/Java] 1417번 국회의원 선거 (0) | 2026.03.08 |
| [백준/Java] 14721번 성적표 (0) | 2026.03.07 |