[JavaScript] 백준 10845 : 큐
2022. 7. 20. 23:38ㆍAlgorithm/백준
class : 2
level : silver 4
문제 링크 : 큐
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
My Solution
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim();
input = input.split('\n');
const N = parseInt(input.shift());
let answer = '', queue = [];
input.forEach((instruction)=>{
if(instruction.includes("push"))
queue.push(Number(instruction.split(/\D/g).filter(Number).map(Number)[0]));
else if(instruction==='pop')
answer+=((queue.length>0?queue.shift():-1)+'\n');
else if(instruction==='front')
answer+=((queue.length>0?queue[0]:-1)+'\n');
else if(instruction==='back')
answer+=((queue.length>0?queue[queue.length-1]:-1)+'\n');
else if(instruction==='size')
answer+=(queue.length+'\n');
else
answer+=((queue.length===0?1:0)+'\n');
})
console.log(answer.trim());
풀이방법
매번 console.log로 출력한다면 시간초과가 나올 수 있기에 answer에 모든 값을 담아 한번에 출력한다.
줄바꿈을 기준으로 입력값인 문자열을 배열로 나눠준다.
입력 배열의 각각 값을 명령어라는 instruction으로 명명하여 하나씩 if문을 이용하여 answer에 적절한 값을 넣는다.
split에 정규식을 이용할 수 있다.
/\D/g라는 정규식을 통해 숫자를 제외한 모든 것으로 분리시킨다. 이 때, 빈 문자열이 나오기에 filter에서 Number를 이용하여 걸러준다.
(빈 문자열잉 Number에 들어가면 NaN이 나오는 데 NaN은 boolean으로 바꾸면 false이다. 따라서 filter에서 걸러진다.)
또한 map 메서드를 이용하여 문자열을 숫자로 변환한다.
느낀점
어렵지는 않고 정규식을 사용하니 어렵지는 않았다.
정규식을 애용해야겠다.
I/O의 시간이 생각보다 길다는 것을 알 수 있다.
'Algorithm > 백준' 카테고리의 다른 글
| [JavaScript] 백준 2178 : 미로 탐색 (1) | 2022.07.28 |
|---|---|
| [JavaScript] 백준 1927 : 최소 힙 (0) | 2022.07.27 |
| [JavaScript] 백준 2839 : 설탕 배달 (0) | 2022.07.14 |
| [JavaScript] 백준 1463 : 1로 만들기 (0) | 2022.07.13 |
| [JavaScript] 백준 1874 : 스택 수열 (0) | 2022.07.13 |