๐ฑ๏ธ9012๋ฒ: ๊ดํธ
๊ดํธ ๋ฌธ์์ด(Parenthesis String, PS)์ ๋ ๊ฐ์ ๊ดํธ ๊ธฐํธ์ธ ‘(’ ์ ‘)’ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์์ด์ด๋ค.
๊ทธ ์ค์์ ๊ดํธ์ ๋ชจ์์ด ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(Valid PS, VPS)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ ์์ ๊ดํธ ๊ธฐํธ๋ก ๋ “( )” ๋ฌธ์์ด์ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ง์ผ x ๊ฐ VPS ๋ผ๋ฉด ์ด๊ฒ์ ํ๋์ ๊ดํธ์ ๋ฃ์ ์๋ก์ด ๋ฌธ์์ด “(x)”๋ VPS ๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ VPS x ์ y๋ฅผ ์ ํฉ(concatenation)์ํจ ์๋ก์ด ๋ฌธ์์ด xy๋ VPS ๊ฐ ๋๋ค.
์๋ฅผ ๋ค์ด “(())()”์ “((()))” ๋ VPS ์ด์ง๋ง “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ “(()” ๋ ๋ชจ๋ VPS ๊ฐ ์๋ ๋ฌธ์์ด์ด๋ค.
์ฌ๋ฌ๋ถ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ดํธ ๋ฌธ์์ด์ด VPS ์ธ์ง ์๋์ง๋ฅผ ํ๋จํด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ YES ์ NO ๋ก ๋ํ๋ด์ด์ผ ํ๋ค.
์ ๋ ฅ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค ์ ๋ ฅ์ ์ฌ์ฉํ๋ค.
์ ๋ ฅ์ T๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ฃผ์ด์ง๋ค.
์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์ฒซ์งธ ์ค์๋ ๊ดํธ ๋ฌธ์์ด์ด ํ ์ค์ ์ฃผ์ด์ง๋ค.
ํ๋์ ๊ดํธ ๋ฌธ์์ด์ ๊ธธ์ด๋ 2 ์ด์ 50 ์ดํ์ด๋ค.
6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(
์ถ๋ ฅ
์ฒซ์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ์ ์ฌ์ฉํ๋ค.
๋ง์ผ ์ ๋ ฅ ๊ดํธ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(VPS)์ด๋ฉด “YES”, ์๋๋ฉด “NO”๋ฅผ ํ ์ค์ ํ๋์ฉ ์ฐจ๋ก๋๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
NO
NO
YES
NO
YES
NO
์์ฌ์ฝ๋
ํ
์คํธ ๋ฐ์ดํฐ ์
๋ ฅ
์คํ, ๊ฒฐ๊ณผ๊ฐ ๋ณ์ ์ด๊ธฐํ
for(ํ์ค of ํ
์คํธ๋ฐ์ดํฐ ์ฌ๋ฌ์ค) {
for(ํ ๊ธ์ of ํ
์คํธ๋ฐ์ดํฐ ํ ์ค) {
if(์ฌ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ) {
์คํ์ ์ฌ๋ ๊ดํธ ์ ์ฅ
} else if(๋ซ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ) {
// ์์ ํ ๊ดํธ๋ stack์์ ์ฌ๋ผ์ง
if(์คํ์ ์ฌ๋ ๊ดํธ๊ฐ ์์ผ๋ฉด) ์คํ์ ์๋ ์ฌ๋ ๊ดํธ ์ ๊ฑฐ
else ์คํ์ ๋ซ๋ ๊ดํธ ์ ์ฅ
}
}
// ๋จ์์๋ค๋๊ฒ์ ์ด๊ณ ๋ซ๋ ๊ดํธ์ ๊ฐ์๊ฐ ๋ง์ง ์๋๋ค๋ ๋ป
๊ฒฐ๊ณผ๊ฐ ๋ณ์์ ์คํ์ ๊ฐ์ด ๋จ์์๋ค๋ฉด YES ์๋๋ฉด NO ์ ์ฅ
์คํ ์ด๊ธฐํ
}
๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ
์์ค ์ฝ๋
// 9012
const filePath = `linux` === process.platform ? `dev/stdin` : 'input.txt';
const lines = require('fs').readFileSync(filePath).toString().trim().split(`\n`);
let stack = [];
const result = [];
for(const line of lines.slice(1)) {
for(const vps of line.trim().split('')) {
if('(' === vps) {
stack.push(vps);
} else if(')' === vps) {
if('(' === stack[stack.length - 1]) stack.pop();
else stack.push(vps);
}
}
result.push(0 === stack.length? 'YES' : 'NO')
stack = [];
}
console.log(result.join('\n'))
'Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][JS] 2563๋ฒ: ์์ข ์ด (0) | 2023.05.03 |
---|---|
[๋ฐฑ์ค] Node.js ์ ์ถ๋ ฅ (0) | 2023.05.03 |