티스토리 뷰

https://www.acmicpc.net/problem/12789

 

12789번: 도키도키 간식드리미

인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두

www.acmicpc.net

const fs = require('fs');
const [n, ...arr] = fs.readFileSync("./dev/stdin").toString().trim().split("\r\n");

const originWait = arr[0].split(' ').map(v=>+v);
const newWait = [];
const N = +n;
let cnt = 1;
let success = true;

//cnt 시작은 1. 다받으면 N+1이되고 탈출.
while(cnt<=N){
		// 새로운 대기열의 마지막 사람의 번호가 현재 cnt랑 일치하면 
        // 대기열에서 나와 간식을 받고. 다음 순서가 진행 
        if(newWait[newWait.length-1]==cnt){
            newWait.pop();
            cnt++;
        }else{
            //원래 대기열에 사람이 없으면 간식 못받음 -> Sad
            if(originWait.length==0){
                success = false;
                break;
            }else{
                // 새로운 대기열의 마지막 사람이 현재 번호와 일치하지 않으면
                // 원래 대기열에서 한명씩 빼면서 확인
                let now = originWait.shift();
                
                 // 일치하면 그사람이 받고.
                if(now==cnt){
                    cnt++;
                    
                 // 일치하지 않으면 새로운 대기열에 진입.
                }else{
                    newWait.push(now)
                }
            }
        }

        
    
}


if(success){
    console.log('Nice')
}else{
    console.log('Sad')
}
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함