Algorithm
- ๊ดํธ์ ๊ฐ -
๋ฌธ์
4๊ฐ์ ๊ธฐํธ ‘(’, ‘)’, ‘[’, ‘]’๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค.
- ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง ‘()’์ ‘[]’๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค.
- ๋ง์ผ X๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ฉด ‘(X)’์ด๋ ‘[X]’๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
- X์ Y ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ผ๋ฉด ์ด๋ค์ ๊ฒฐํฉํ XY๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
์๋ฅผ ๋ค์ด ‘(()[[]])’๋ ‘(())[][]’ ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด์ง๋ง ‘([)]’ ๋ ‘(()()[]’ ์ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ์๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ ๋ํ์ฌ ๊ทธ ๊ดํธ์ด์ ๊ฐ(๊ดํธ๊ฐ)์ ์๋์ ๊ฐ์ด ์ ์ํ๊ณ ๊ฐ(X)๋ก ํ์ํ๋ค.
- ‘()’ ์ธ ๊ดํธ์ด์ ๊ฐ์ 2์ด๋ค.
- ‘[]’ ์ธ ๊ดํธ์ด์ ๊ฐ์ 3์ด๋ค.
- ‘(X)’ ์ ๊ดํธ๊ฐ์ 2×๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ‘[X]’ ์ ๊ดํธ๊ฐ์ 3×๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ Y๊ฐ ๊ฒฐํฉ๋ XY์ ๊ดํธ๊ฐ์ ๊ฐ(XY)= ๊ฐ(X)+๊ฐ(Y) ๋ก ๊ณ์ฐ๋๋ค.
์๋ฅผ ๋ค์ด ‘(()[[]])([])’ ์ ๊ดํธ๊ฐ์ ๊ตฌํด๋ณด์. ‘()[[]]’ ์ ๊ดํธ๊ฐ์ด 2 + 3×3=11 ์ด๋ฏ๋ก ‘(()[[]])’์ ๊ดํธ๊ฐ์ 2×11=22 ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ‘([])’์ ๊ฐ์ 2×3=6 ์ด๋ฏ๋ก ์ ์ฒด ๊ดํธ์ด์ ๊ฐ์ 22 + 6 = 28 ์ด๋ค.
์ฌ๋ฌ๋ถ์ด ํ์ด์ผ ํ ๋ฌธ์ ๋ ์ฃผ์ด์ง ๊ดํธ์ด์ ์ฝ๊ณ ๊ทธ ๊ดํธ๊ฐ์ ์์์ ์ ์ํ๋๋ก ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
์ ์ถ๋ ฅ ์์
๋ฌธ์ ํ๊ธฐ
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
input = line.toString().trim().split("");
}).on("close", function () {
let result = [];
while (input.length) {
let bracket = input.shift();
if (!result.length && (bracket === ")" || bracket === "]")) {
result.push(bracket);
break;
} else if (bracket === "(" || bracket === "[") {
result.push(bracket);
} else {
if (!isNaN(result[result.length - 1])) {
let num = result.pop();
if (bracket === ")" && result[result.length - 1] === "(") {
result.pop();
result.push(2 * num);
} else if (bracket === "]" && result[result.length - 1] === "[") {
result.pop();
result.push(3 * num);
} else {
result.push(num, bracket);
}
} else {
if (bracket === ")" && result[result.length - 1] === "(") {
result.pop();
result.push(2);
} else if (bracket === "]" && result[result.length - 1] === "[") {
result.pop();
result.push(3);
} else {
result.push(bracket);
}
}
}
if (
!isNaN(result[result.length - 1]) &&
!isNaN(result[result.length - 2])
) {
let nums = result.splice(-2);
result.push(nums[0] + nums[1]);
}
}
if (result.length > 1 || isNaN(result[0])) {
console.log(0);
} else {
console.log(result[0]);
}
process.exit();
});
'๊ฐ์ธ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][Node.js] 2522๋ฒ : ๋ณ์ฐ๊ธฐ - 12 (0) | 2021.08.20 |
---|---|
[๋ฐฑ์ค][Node.js] 2506๋ฒ : ์ ์๊ณ์ฐ (0) | 2021.08.19 |
[๋ฐฑ์ค][Node.js] 2480๋ฒ : ์ฃผ์ฌ์ ์ธ๊ฐ (0) | 2021.08.17 |
[๋ฐฑ์ค][Node.js] 2480๋ฒ : ์ฃผ์ฌ์ ์ธ๊ฐ (0) | 2021.08.16 |
[๋ฐฑ์ค][Node.js] 2475๋ฒ : ๊ฒ์ฆ์ (0) | 2021.08.14 |
๋๊ธ