https://www.acmicpc.net/problem/10845
[유형]
- 자료구조
- 큐
[문제 풀이]
명령어를 판단할 배열요소는 temp에 넣고
"출력" 명령시 새로운 변수에 넣어준다 한줄에 하나씩 출력해줌!
[코드]
||❌ 시간초과 난 코드
const fs = require('fs');
let [n, ...input] = fs.readFileSync('./input.txt').toString().trim().split('\n');
let temp = [];
let ans = [];
for(command of input){
let cmd = command.split(' ')[0];
let cmdCount = command.split(' ')[1];
if(cmd === 'push'){
temp.push(Number(cmdCount))
}else if(cmd === 'front'){
ans.push(temp[0] ? temp[0] : -1);
}else if(cmd === 'back'){
ans.push(temp.length !== 0 ? temp[temp.length-1] : -1);
}else if(cmd === 'size'){
ans.push(temp.length)
}else if(cmd === 'empty'){
ans.push(temp.length === 0 ? 1 : 0)
}else if(cmd === 'pop'){
ans.push(temp.length !== 0? temp.shift() : -1);
}else return
}
for (let i = 0; i < ans.length; i++) {
console.log(ans[i]);
}
원인 => 0.5초 문제인데 for 문을 2번이나 돌려서 인듯 ㅠ
방법 => ans 에 담기는 데이터들을 배열에 넣지말고 string 으로 넣자 + '\n' 띄어쓰기도 같이 넣어준다.
||⭕️ 통과된 코드
const fs = require('fs');
let [n, ...input] = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
let temp = [];
let ans = '';
for(command of input){
let cmd = command.split(' ')[0];
let cmdCount = command.split(' ')[1];
if(cmd === 'push'){
temp.push(Number(cmdCount))
}else if(cmd === 'front'){
ans += (temp[0] ? temp[0]+'\n' : -1+'\n');
}else if(cmd === 'back'){
ans +=(temp.length !== 0 ? temp[temp.length-1]+'\n' : -1+'\n');
}else if(cmd === 'size'){
ans +=(temp.length+'\n')
}else if(cmd === 'empty'){
ans +=(temp.length === 0 ? 1+'\n' : 0+'\n')
}else if(cmd === 'pop'){
ans +=(temp.length !== 0? temp.shift()+'\n' : -1+'\n');
}else return
}
console.log(ans.trim());
728x90
반응형
'자료구조+알고리즘 > BOJ' 카테고리의 다른 글
[백준11441-silver3] 합 구하기 (javascript) (2) | 2024.03.05 |
---|---|
[백준2167-silver5] 2차원 배열의 합 (javascript) (1) | 2024.03.05 |
[BOJ-11866_silver5]요세푸스 문제 0 (자바스크립트) (0) | 2024.03.02 |
[BOJ-24511_silver3] queuestack (javascript) (0) | 2024.03.02 |
[BOJ-17413_silver3] 단어 뒤집기2 (javascript) (0) | 2024.02.29 |