728x90
문제 설명
문제 풀이 방법
- 이 문제는 스택을 이용해 풀었다.
주어지는 과제가 있다면 과제를 바로 수행해야 하므로 stack에 넣고 2번 작업으로 넘어간다.
과제가 없다면 2번 작업으로 넘어간다. - 과제를 받게되면 남은 기간에 -1을 해주고
남은 기간이 0이 되면 score에 해당 점수를 더해주고 pop() 메서드를 이용해 작업 리스트에서 뽑아준다. - 집계된 점수를 반환
코드
const path = __dirname + '/예제.txt'; // /dev/stdin
let input = require('fs').readFileSync(path).toString().trim().split('\n').map(e => e.split(' ').map(Number));
const [N] = input.shift();
const list = input.slice();
// 스택으로 사용. 맨 뒤 작업의 시간이 0이되면 방출
let doingList = [];
let score = 0;
for (let i = 0; i < N; i++){
if (list[i].length === 3) {
doingList.push(list[i]);
}
if (doingList.length) {
doingList[doingList.length - 1][2] -= 1;
if (doingList[doingList.length - 1][2] === 0) {
score += doingList.pop()[1];
}
}
}
console.log(score);
이 문제를 처음에 제출했을 때는 시간초과가 떳다.
코드를 보면 스택을 만들고 이용하는데 shift() 메서드를 이용해서 시간초과가 발생한거 같기도했다.
그래서 for 반복문을 수정해서 shift() 메서드를 제거해서 제출했더니 통과했다.
이 문제를 nodejs로 푼 사람이 나를 포함해서 13명이였다....
확실히 javascript로 코테를 준비한다는게 쉽지는 않은거같다....
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[Nodejs] 5073번 삼각형과 세 변 (0) | 2023.06.29 |
---|---|
[Nodejs] 17178번 줄서기 (0) | 2023.06.23 |
[Nodejs] 16926번 배열돌리기 1 (0) | 2023.06.19 |
[Nodejs] 골드V / 14500번 테트로미노 (0) | 2023.06.19 |
[Nodejs] 실버 / 추월 (0) | 2023.06.17 |