(๊ทธ๋ฆฌ๋) ํ๋ก๊ทธ๋๋จธ์ค ํฐ ์ ๋ง๋ค๊ธฐ (level 2)
function solution(number, k) {
let answer = [];
let length = k;
for (let i = 0; i < number.length; i++) {
while (k > 0 && answer.length && number[i] > answer[answer.length - 1]) {
answer.pop();
k--;
}
answer.push(number[i]);
}
return answer.join('').slice(0, number.length - length);
}ํ๋ก๊ทธ๋๋จธ์ค ๊ทธ๋ฆฌ๋ ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ์ค ํฐ ์ ๋ง๋ค๊ธฐ ๋ฌธ์ ์ด๋ค.
์ฒ์์๋,
๊ฐ ์๋ฆฟ ์์ ๋ค์ด๊ฐ ์ ์๋ ์ซ์ ์ค (number์ ์ผ๋ถ) ๊ฐ์ฅ ํฐ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๋ฐฐ์ดํ๋๋ก ์๋ํ๋ค.
์ด๋ ๊ฒ ํด๋ณด์์ ๋๋ ์๊ฐ์ด๊ณผ ์์ด O(N^2) ์ผ๋ก ์์ฑํ ์ ์๋๋ฐ, ์ ์ฒด ํ
์คํธ ์ผ์ด์ค ์ค 10๋ฒ์์ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๊ฒฐ๊ตญ 10๋ฒ์ ๋ํ ๋ฐ๋ก๋ฅผ ์ฐพ์ง ๋ชปํ์ฌ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํด๋ณด์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
stack ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ number๋ฅผ ์ํํ๋ฉฐ stack ์ ์ด๋ฏธ ํฌํจ๋์ด ์๋ ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
stack ์ ์ถ๊ฐํด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ k ๋งํผ์ ์๋ฅผ ์ ์ธํ ๊ฐ์ ๋ฆฌํดํด์ฃผ์๋ค.
์ด๋ ๊ฒ ํ๊ณ ๋๋ ์ฝ๋๊ฐ ํ๊ฒฐ ์งง๊ณ ๊น๋ํ๋ค .. ์ฝ์ง ์ด์ฌํ ํ๋ค ๐ฅน