ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
https://www.acmicpc.net/problem/1874
1874๋ฒ: ์คํ ์์ด
1๋ถํฐ n๊น์ง์ ์์ ๋ํด ์ฐจ๋ก๋ก [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] ์ฐ์ฐ์ ์ํํ๋ฉด ์์ด [4, 3, 6, 8, 7, 5, 2, 1]์ ์ป์ ์ ์๋ค.
www.acmicpc.net
๋ฌธ์ ํ์ด
- ์ฃผ์ด์ง ์ ์๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ ๋ max๋ณด๋ค ํด ๊ฒฝ์ฐ์ ํด๋น ์ ์๊ฐ๊น์ง push ์ฐ์ฐ
- ํด๋น ์ ์๊ฐ๊น์ง push๋ stack ๋ฐฐ์ด ๋ด์์ ๋ง์ง๋ง ์ธ๋ฑ์ค ์์์ธ ์ฃผ์ด์ง ์ ์๊ฐ์ pop ์ฐ์ฐ
- max๊ฐ์ ์ฃผ์ด์ง ์ ์๊ฐ์ผ๋ก ์ด๊ธฐํ
- ์ฃผ์ด์ง ์ ์๊ฐ์ด ์ด์ ์ ์๊ฐ์ผ๋ก ์ด๊ธฐํ ๋ max๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ์ ํด๋น ์ ์๊ฐ๊น์ง pop์ฐ์ฐ
์ฝ๋
function solution(arr) {
let answer = [];
let stack = [];
let tmp = [];
let max = 0;
let newArr = arr.filter((v, i) => i !== 0).map(val => Number(val))
for(let x of newArr) {
if(max < x) {
for(let i = max; i < x; i++) {
stack.push(i + 1);
answer.push('push');
}
tmp.push(stack.pop());
answer.push('pop');
max = x;
}
else {
while(stack[stack.length - 1] >= x) {
tmp.push(stack.pop());
answer.push('pop');
}
}
}
if(newArr.join('') !== tmp.join('')) return answer = 'NO';
return answer.join('\n');
}
let arr = ['8', '4', '3', '6', '8', '7', '5', '2', '1'];
console.log(solution(arr));
์์ ๋ก์ง์ด ์ธ๋ถ ํธ์ง๊ธฐ์์๋ ๋ง๋ ๊ฒ์ผ๋ก ํ์ธ๋์์ง๋ง nodeJS ๋ฐํ์ ํ๊ฒฝ์์๋ ํ๋ ธ๋ค๊ณ ๋์จ๋ค.
ํ ์คํธ ์ผ์ด์ค ์ค ๊ฑธ๋ง์ง ์์ ์ฌํญ์ด ์๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์์ฒด์ ์ค๋ฅ์ผ ๊ฒ ๊ฐ์๋ฐ, ํฅํ ๋ก์ง์ ๋ค์ ์๊ฐํด ๋ณธ ๋ค ๋์ ํด ๋ณด๊ณ ์ ํ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2020 KAKAO BLIND RECRUITMENT]๋ฌธ์์ด ์์ถ_์ ๊ท ํํ์์ ๋ณ์ ํ ๋น (0) | 2021.09.02 |
---|---|
[2018 KAKAO BLIND RECRUITMENT]๋น๋ฐ์ง๋ (0) | 2021.09.01 |
[2018 KAKAO BLIND RECRUITMENT]๋คํธ ๊ฒ์_regExp.match ๋ฉ์๋์ ๋ํด ํ์ต (0) | 2021.08.26 |
[๋ฐฑ์ค 9012๋ฒ]๊ดํธ (0) | 2021.08.25 |
[๋ฐฑ์ค 9093๋ฒ]๋จ์ด ๋ค์ง๊ธฐ (0) | 2021.08.24 |
๋๊ธ