발행일

[99클럽] 99클럽 코테 스터디 14일차TIL + 스택 / 큐

[99클럽] 99클럽 코테 스터디 14일차TIL + 스택 / 큐

이 글은 네이버 블로그에 2025년 2월 6일에 올렸던 것을 그대로 옮겨온 것입니다.

  • 오늘의 학습 키워드

  • 공부한 내용 본인의 언어로 정리하기

  • 오늘의 회고

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

  • 어떻게 해결했는지

  • 무엇을 새롭게 알았는지

  • 내일 학습할 것은 무엇인지

비기너 식당 메뉴 https://www.acmicpc.net/problem/26043

미들러 오목https://www.acmicpc.net/problem/2615

챌린저 골목길 https://www.acmicpc.net/problem/1738

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let n;
let queue = [];
let likeMenu = new Map();
let eatenA = [];
let eatenB = [];
let notEaten = new Set();

rl.on('line', (line) => {
    if (n === undefined) {
        n = parseInt(line);
    } else {
        let parts = line.split(' ');
        let type = parseInt(parts[0]);
        
        if (type === 1) {
            // 학생 도착
            let student = parseInt(parts[1]);
            let menu = parseInt(parts[2]);
            queue.push(student);
            likeMenu.set(student, menu);
        } else if (type === 2) {
            // 식사 제공
            let menu = parseInt(parts[1]);
            if (queue.length > 0) {
                let student = queue.shift();
                let preferredMenu = likeMenu.get(student);
                
                if (preferredMenu === menu) {
                    eatenA.push(student);
                } else {
                    eatenB.push(student);
                }
                likeMenu.delete(student);
            }
        }
    }
}).on('close', () => {
    // 남아 있는 학생이 식사 못한 경우
    queue.forEach(student => notEaten.add(student));
    
    // 출력 정렬
    eatenA.sort((a, b) => a - b);
    eatenB.sort((a, b) => a - b);
    let notEatenArr = Array.from(notEaten).sort((a, b) => a - b);
    
    console.log(eatenA.length > 0 ? eatenA.join(' ') : 'None');
    console.log(eatenB.length > 0 ? eatenB.join(' ') : 'None');
    console.log(notEatenArr.length > 0 ? notEatenArr.join(' ') : 'None');
    
    process.exit(0);
});

필수 해시태그: #99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

image