๋ฌธ์
ํ์ด ๊ณผ์
๋ฌธ์์ด์ ๊ท์น์ ๋ฐ๋ผ ๋์ฝ๋ฉํ์ฌ ์๋ณธ ๋ฌธ์์ด์ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.[
๊ดํธ ์์๋ ๋ฐ๋ณตํ ์ซ์๊ฐ ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ์คํ
์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค.
๋จผ์ ๋ฌธ์์ด์ ๊ฐ ๋ฌธ์๋ฅผ ์ํํ๋ฉฐ [ ์ ] ๊ทธ๋ฆฌ๊ณ ์ซ์
๋ฅผ ์ ์ธํ ๋ฌธ์๋ค์ ๊ทธ๋ฅ push
ํด์ค๋๋ค.
๋ง์ฝ ์ซ์๋ฅผ ๋ง๋ ๊ฒฝ์ฐ์๋ ํ์ฌ ์คํ์ top
์ด ์ซ์์ธ์ง ํ๋จํ๊ณ ์ซ์๋ผ๋ฉด ํด๋น ์ซ์์ ์ด์ด๋ถ์
๋๋ค.
(๋ ์๋ฆฌ์ ์ด์์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์)
์ดํ ]
๋ฅผ ๋ง๋๋ฉด [
๊ฐ ๋ฐ๊ฒฌ๋ ๋ ๊น์ง ๋ฌธ์๋ค์ pop
ํ๊ณ [
์์ ์ซ์๋งํผ repeat
ํด์ค๋๋ค.
์ต์ข
์ ์ผ๋ก ์คํ
์ ๋จ์์๋ ๋ฌธ์๋ค์ ๋ชจ๋ ํฉ์ณ์ฃผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ์๋ณธ ๋ฌธ์์ด์ด ๋ฉ๋๋ค.
์ฝ๋
/**
* @param {string} s
* @return {string}
*/
var decodeString = function (s) {
const stack = [];
for (let c of s) {
if (c === "]") {
let temp = "";
while (stack[stack.length - 1] !== "[") {
temp = stack.pop() + temp;
}
stack.pop();
temp = temp.repeat(parseInt(stack.pop()));
stack.push(temp);
} else if (!isNaN(c)) {
if (!isNaN(stack[stack.length - 1])) {
stack[stack.length - 1] += c;
} else {
stack.push(c);
}
} else {
stack.push(c);
}
}
return stack.join("");
};
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 279 - Perfect Squares (Medium) (0) | 2021.03.03 |
---|---|
LeetCode 94 - Binary Tree Inorder Traversal (Medium) (0) | 2021.03.03 |
LeetCode 78 - Subsets (Medium) (0) | 2021.03.03 |
LeetCode 739 - Daily Temperatures (Medium) (0) | 2021.03.03 |
LeetCode 114 - Flatten Binary Tree to Linked List (Medium) (0) | 2021.03.03 |
๐ฌ ๋๊ธ