let's get IT with DAVINA ๐ป
[๋ฐฑ์ค #4949] ๊ท ํ์กํ ์ธ์ ๋ณธ๋ฌธ
์คํ์ ํ์ฉ ๋ฌธ์ ๋ก, ๊ดํธ์ ๋ง์ถ๊ธฐ ์ ํ์ด๋ค.
โ ๋ฌธ์
์ธ๊ณ๋ ๊ท ํ์ด ์ ์กํ์์ด์ผ ํ๋ค. ์๊ณผ ์, ๋น๊ณผ ์ด๋ ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ๊ดํธ์ ์ค๋ฅธ์ชฝ ๊ดํธ์ฒ๋ผ ๋ง์ด๋ค.
์ ๋ฏผ์ด์ ์๋ฌด๋ ์ด๋ค ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ดํธ๋ค์ ๊ท ํ์ด ์ ๋ง์ถฐ์ ธ ์๋์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ง๋ ๊ฒ์ด๋ค.
๋ฌธ์์ด์ ํฌํจ๋๋ ๊ดํธ๋ ์๊ดํธ("()") ์ ๋๊ดํธ("[]")๋ก 2์ข ๋ฅ์ด๊ณ , ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ์๊ดํธ("(")๋ ์ค๋ฅธ์ชฝ ์๊ดํธ(")")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ๋๊ดํธ("[")๋ ์ค๋ฅธ์ชฝ ๋๊ดํธ("]")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ค๋ฅธ์ชฝ ๊ดํธ๋ค์ ์์ ๊ณผ ์ง์ ์ด๋ฃฐ ์ ์๋ ์ผ์ชฝ ๊ดํธ๊ฐ ์กด์ฌํ๋ค.
- ๋ชจ๋ ๊ดํธ๋ค์ ์ง์ 1:1 ๋งค์นญ๋ง ๊ฐ๋ฅํ๋ค. ์ฆ, ๊ดํธ ํ๋๊ฐ ๋ ์ด์์ ๊ดํธ์ ์ง์ง์ด์ง์ง ์๋๋ค.
- ์ง์ ์ด๋ฃจ๋ ๋ ๊ดํธ๊ฐ ์์ ๋, ๊ทธ ์ฌ์ด์ ์๋ ๋ฌธ์์ด๋ ๊ท ํ์ด ์กํ์ผ ํ๋ค.
์ ๋ฏผ์ด๋ฅผ ๋์ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋ ๊ท ํ์กํ ๋ฌธ์์ด์ธ์ง ์๋์ง๋ฅผ ํ๋จํด๋ณด์.
๐๏ธ ์ ๋ ฅ
๊ฐ ๋ฌธ์์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ์ ์ธํ๊ณ ์๋ฌธ ์ํ๋ฒณ, ๊ณต๋ฐฑ, ์๊ดํธ("( )"), ๋๊ดํธ("[ ]")๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์จ์ (".")์ผ๋ก ๋๋๊ณ , ๊ธธ์ด๋ 100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๐๏ธ ์ถ๋ ฅ
๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅํ๋ค.
๐๏ธ ์์ ์ ์ถ๋ ฅ
//์
๋ ฅ
So when I die (the [first] I will see in (heaven) is a score list).
[ first in ] ( first out ).
Half Moon tonight (At least it is better than no Moon at all].
A rope may form )( a trail in a maze.
Help( I[m being held prisoner in a fortune cookie factory)].
([ (([( [ ] ) ( ) (( ))] )) ]).
.
.
//์ถ๋ ฅ
yes
yes
no
no
no
yes
yes
โ๏ธ ๋น๋'s ํ์ด
- ์ผ๋จ ์ ๋ ฅ๊ฐ์ ๋ฐฐ์ด๋ก ๊ฐ ์ค์ ๊ฐ์ ธ์์
- ํด๋น ๋ฌธ์์ด ๋ฌธ์ฅ์ ๋ค ๋๋ฆด๋๋ง๋ค ( or [ ๋ฅผ ๋ง๋๋ฉด ์คํ์ ๋ฃ๊ณ
- ) or ] ์ ๋ง๋๋ฉด ์คํ์ ์๋์ง๋ฅผ ๋น๊ตํด์ผ๋๋ค๊ณ ์๊ฐํ์ผ๋
- ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ ๊ณ์ ์ฌ์ฉํ๋ฉฐ ๊ทธ ์์๊ฐ ๋๋ฌด ํท๊ฐ๋ ค์ ๊ณ์ ์๋ฌ๊ฐ ๋ด๋ค.. ๊ฒฐ๊ตญ์ ๊ฒ์ํ์ฌ ์ฐธ์กฐํด๋ถ๋ ธ๋ค..
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const res = [];
for (let el of input) { //ํ๋์ ์
๋ ฅ๋ง๋ค ๋ค ๋๊ธฐ
let compare = []; //์คํ
let isMatch = true;
if (el === ".") break;
for (let i = 0; i < el.length; i++) {
if (el[i] === "[" || el[i] === "(") { //๋ฌธ์์ด์ [๋ (๊ฐ ์๋์ง ์ดํผ๊ณ
compare.push(el[i]); //์์ผ๋ฉด ์คํ์ ์ถ๊ฐ
} else if (el[i] === "]") { //]๋ฅผ ๋ง๋ฌ์ ๊ฒฝ์ฐ ๋จผ์ ๋ณด๊ธฐ
if (compare[compare.length - 1] === "[") { //์คํ ๋ง์ง๋ง์ [๊ฐ ์์ด?
compare.pop(); //๊ทธ๋ผ ์ง ๋ง์์ผ๋ ์์
} else { //์คํ์ [๊ฐ ์์ด?
isMatch = false; //์๋ง์์
break;
}
} else if (el[i] === ")") { //)๊ฐ ๋์์๋?
if (compare[compare.length - 1] === "(") { //(๊ฐ ์์ด?
compare.pop(); //์ง๋ง๋๋ค ์์
} else { //์คํ์ (๊ฐ ์์ด?
isMatch = false; //์๋ง์์
break;
}
} else if (el[i] === ".") break;
}
if (compare.length > 0 || isMatch === false) {
res.push("no");
} else res.push("yes");
}
console.log(res.join("\n"));
'DEV_IN > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]Lv2. ์ฌ๋ฐ๋ฅธ ๊ดํธ (2) | 2023.03.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]Lv2. ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2023.03.21 |
[ํ๋ก๊ทธ๋๋จธ์ค]Lv0. ๋ฐฐ์ด ํ์ ์ํค๊ธฐ (0) | 2023.03.20 |
[ํ๋ก๊ทธ๋๋จธ์ค]Lv2. JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2023.03.20 |
[ํ๋ก๊ทธ๋๋จธ์ค]Lv2. ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (2) | 2023.03.18 |