728x90
문제 설명
https://www.acmicpc.net/problem/17178
문제 풀이 방법
- 이 문제는 스택을 이용해 풀었다.
FILO(First In First Out) 선입 후출 방식으로 스택을 구성했다. - 입력받는 사람들이 줄선 리스트와 그 리스트를 아파벳, 숫자로 정렬한 리스트의 맨 앞 값들을 비교하며
스택에 넣을지 제거할지 결정하는 코드를 작성했다. - 대기하는 사람들이 있는 스택에 남은 사람이 없으면 GOOD, 있다면 BAD를 출력하도록 했다.
코드
const path = __dirname + '/예제.txt'; // /dev/stdin
let input = require('fs').readFileSync(path).toString().trim().split('\n').map(e => e);
let lineUp = input.slice(1).map(e => e.split(' ').map(e => e.split('-'))).flat();
let sortedLineUp = lineUp.map(e => e).sort((a, b) => a[0].localeCompare(b[0]) || a[1] - b[1]);
// FILO방식
let wait = [];
while (true) {
if (lineUp.length === 0) {
if (wait.length) {
if (wait[wait.length - 1] !== sortedLineUp[0]) {
break;
}
else {
wait.pop();
sortedLineUp.shift();
};
}
else break;
}
if (lineUp[0] === sortedLineUp[0]) {
lineUp.shift();
sortedLineUp.shift();
}
else {
if (wait[wait.length - 1] === sortedLineUp[0]) {
wait.pop();
sortedLineUp.shift();
}
else {
wait.push(lineUp.shift());
}
}
}
console.log(wait.length > 0 ? 'BAD' : 'GOOD');
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[Nodejs] 21971번 ZOAC 4 (0) | 2023.06.29 |
---|---|
[Nodejs] 5073번 삼각형과 세 변 (0) | 2023.06.29 |
[Nodejs] 17952번 과제는 끝나지 않아! (0) | 2023.06.22 |
[Nodejs] 16926번 배열돌리기 1 (0) | 2023.06.19 |
[Nodejs] 골드V / 14500번 테트로미노 (0) | 2023.06.19 |