문제링크
https://www.acmicpc.net/problem/10828
풀이
어려운 문제는 아니었고, 항상 파이썬만으로 문제를 풀어왔었기 때문에 자바스크립트로 문제를 푸는 것을 연습하는 중에 다른 문제가 나오더라도 필요한 배경지식일 것 같아서 기록을 남긴다.
아래의 두 방식 모두 정답을 출력하는 코드들이지만, 첫번째 풀이의 경우 반복문이 실행될 때마다 출력을 하고, 두번째 풀이의 경우 반복문이 실행될 때마다 출력값을 담는 배열에 삽입 후 마지막에 한번에 출력한다.
자바스크립트는 다른 언어에 비해 안그래도 많이 느리기 때문에 시간 초과 문제를 많이 겪게 될 것 같고 이러한 팁들을 많이 기억해두고 사용해야 할 것 같다.
반복문이 실행되는 각 경우에 결과값을 출력하는 경우
let input = require('fs').readFileSync('10828.txt').toString().split('\n');
// let input = require('fs').readFileSync('dev/stdin').toString().split('\n');
const T = input[0];
const stk = [];
for (let i = 1; i <= T; i++) {
const command = input[i].split(' ');
switch (command[0]) {
case 'push':
stk.push(command[1]);
break;
case 'pop':
console.log(stk.length > 0 ? Number(stk.pop()) : -1);
break;
case 'size':
console.log(stk.length);
break;
case 'empty':
if (stk.length === 0) {
console.log(1);
} else {
console.log(0);
}
break;
case 'top':
console.log(stk.length > 0 ? Number(stk[stk.length - 1]) : -1);
break;
}
}
출력 값을 담을 배열(result)을 만들고, 이 안에 출력값들을 넣고 한번에 출력하는 경우
// let input = require('fs').readFileSync('10828.txt').toString().split('\n');
let input = require('fs').readFileSync('dev/stdin').toString().split('\n');
const T = input[0];
const stk = [];
const result = [];
for (let i = 1; i <= T; i++) {
const command = input[i].split(' ');
switch (command[0]) {
case 'push':
stk.push(command[1]);
break;
case 'pop':
result.push(stk.length > 0 ? Number(stk.pop()) : -1);
break;
case 'size':
result.push(stk.length);
break;
case 'empty':
if (stk.length === 0) {
result.push(1);
} else {
result.push(0);
}
break;
case 'top':
result.push(stk.length > 0 ? Number(stk[stk.length - 1]) : -1);
break;
}
}
console.log(result.join('\n'));
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 level 3 - 정수 삼각형(Javascript) (1) | 2023.10.28 |
---|---|
프로그래머스 - 게임 맵 최단거리(DFS, BFS) (0) | 2023.09.05 |
프로그래머스 - 카펫(완전탐색) (0) | 2023.09.02 |
프로그래머스 - 모의고사(완전탐색) (0) | 2023.09.02 |
프로그래머스 - 최소직사각형(완전탐색) (0) | 2023.09.02 |