let's get IT with DAVINA ๐Ÿ’ป

[๋ฐฑ์ค€ #10828] ์Šคํƒ ๋ณธ๋ฌธ

DEV_IN/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€ #10828] ์Šคํƒ

๋‹ค๋นˆ์น˜์ฝ”๋“œ๐Ÿ’Ž 2023. 3. 13. 18:20
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด์„œ ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด๋ฅผ C++๋กœ ๋“ค์œผ๋‹ˆ ํ•˜๋‚˜๋„ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์„œ ์ด๋ก ๋งŒ ์ฃผ๊ตฌ์žฅ์ฐฝ ๋น ๋ฅด๊ฒŒ ๋ดค๋‹ค.. ๊ฐœ๋…์„ ๋ฐฐ์› ์œผ๋ฉด ๊ทธ์— ํ•ด๋‹น๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜๋ผ๋„ ์ง์ ‘ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค์‹ถ์–ด์„œ ๋ฐฑ์ค€์„ ํ’€์–ด๋ดค๋‹ค..(์–ด๋ ต..)

โ“ ๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํƒ์„ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
๋ช…๋ น์€ ์ด ๋‹ค์„ฏ ๊ฐ€์ง€์ด๋‹ค.
- push X: ์ •์ˆ˜ X๋ฅผ ์Šคํƒ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
- pop: ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
- size: ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
- empty: ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
- top: ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ ์•Š์€ ๋ช…๋ น์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๋ช…๋ น์ด ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค, ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ—๏ธ ์˜ˆ์ œ ์ž…๋ ฅ

14
push 1
push 2
top
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
top

๐Ÿ—๏ธ ์˜ˆ์ œ ์ถœ๋ ฅ

2
2
0
2
1
-1
0
1
-1
0
3

โ—๏ธ ๋น„๋‹ˆ's ํ’€์ด

๋ฐฑ์ค€์„ nodejs ์–ธ์–ด๋กœ ํ’€๋ ค๋ฉด ๋ฏธ๋ฆฌ ์…‹ํŒ…ํ•ด์•ผ๋˜๋Š”๊ฒŒ ์žˆ์–ด์„œ ์ƒ์†Œํ•˜๊ณ  ์ด ๋ถ€๋ถ„์ด ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค..

์กฐ๊ฑด๋ฌธ์ด ๋ณต์ˆ˜๊ฐœ์ผ๋•Œ, if...else~๋ฌธ๋ณด๋‹ค switch๋ฌธ์„ ์จ์„œ

switch(condition) case()๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. 

switch ๋ฌธ์€ switch ๋ฌธ์˜ condition์„ ํ‰๊ฐ€ํ•˜์—ฌ ๊ทธ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ํ‘œํ˜„์‹์„ ๊ฐ–๋Š” case ๋ฌธ์œผ๋กœ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ด๋™์‹œํ‚จ๋‹ค.

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const stack = [];
const answer = []; //์ถœ๋ ฅ์šฉ
const len = Number(input[0]); //๋งจ ์ฒ˜์Œ์— ์ž…๋ ฅ๋˜๋Š” ์ˆซ์ž๊ฐ€ ๋ช…๋ น์˜ ๊ฐœ์ˆ˜

for(let i=1;i<=len;i++){
    let cmd=input[i].split(" "); //๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ
    switch(cmd[0]){ //๋ชจ๋“  ๋ช…๋ น์˜ ์ฒซ๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๋ญ์•ผ~push/top/size/empty/pop๋ญ์—ฌ๋ญ์—ฌ
        case 'push' : stack.push(cmd[1]); //push๋ฉด? push 1์—์„œ "1"์„ stack์— ๋„ฃ์–ด์ค˜ 
            break;
        case 'pop' : answer.push(stack.pop()||-1);
            break;
        case 'size' : answer.push(stack.length);
            break;
        case 'empty' : answer.push(stack.length!==0? 0:1)
            break;
        case 'top': answer.push(stack[stack.length-1]||-1)
            break;
    }
}

console.log(answer.join("\n"))
Comments