PLOD

[백준] 식당 메뉴(26043) 본문

대외 활동 및 IT 지식/알고리즘 문제 풀이 정리

[백준] 식당 메뉴(26043)

훌룽이 2026. 2. 25. 20:28

✅ 코드

package test.silver;

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

public class 백준_26043 {
    static int n;
    static Deque<int[]> queue;       // 학생 줄: {학번, 원하는메뉴}
    static List<Integer> a;          // 원하는 메뉴 먹음
    static List<Integer> b;          // 원하는 메뉴 못 먹음
    static List<Integer> c;          // 식사 못 함 (끝까지 줄에 남음)

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

        queue = new ArrayDeque<>();
        a = new ArrayList<>();
        b = new ArrayList<>();
        c = new ArrayList<>();

        n = Integer.parseInt(br.readLine().trim());

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int type = Integer.parseInt(st.nextToken());

            if (type == 1) {
                int id = Integer.parseInt(st.nextToken());
                int want = Integer.parseInt(st.nextToken());
                queue.offer(new int[]{id, want});
            } else { // type == 2
                int menu = Integer.parseInt(st.nextToken());

                int[] student = queue.poll();
                // 입력이 항상 유효해서 queue가 비지 않는다고 가정하면 아래 null 체크는 없어도 되지만,
                // 안전하게 넣어둠
                if (student == null) continue;

                if (student[1] == menu) a.add(student[0]);
                else b.add(student[0]);
            }
        }

        while (!queue.isEmpty()) c.add(queue.poll()[0]);

        printList(a);
        printList(b);
        printList(c);

        br.close();
    }

    static void printList(List<Integer> list) {

        if (list.isEmpty()) {
            System.out.println("None");
            return;
        }
        Collections.sort(list);
        StringBuilder sb = new StringBuilder();
        for (int x : list) sb.append(x).append(' ');
        sb.setLength(sb.length() - 1); // 마지막 공백 제거
        System.out.println(sb);
    }
}

// 187080	1004

💡 배운 점 & 느낀 점

1. StringBuilder sb → 문자열을 쉽게 출력하기 위한 장치 

for (int x : list) sb.append(x).append(' ');			// 공백 추가 해서 INPUT
sb.setLength(sb.length() - 1); 							// 마지막 공백 제거
System.out.println(sb);									// 출력

 

2. Collections.sort() → 컬렉션 프레임워크 정렬

Collections.sort(list);

'대외 활동 및 IT 지식 > 알고리즘 문제 풀이 정리' 카테고리의 다른 글

[백준] 좌표 압축(18870)  (0) 2026.03.09
[백준] 파일 정리(20291)  (0) 2026.03.09
[백준] 큐(10843)  (0) 2026.02.22
[백준] 스택(10828)  (0) 2026.02.22
[백준] 세로읽기(10798)  (0) 2026.02.18
Comments