- Published on
Codility - Brackets
- Author
- Name
- yceffort
Brackets
๋ฌธ์
๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง๊ณ , S๋ ๋ค์ ๊ฒฝ์ฐ ์ผ ๋ ์ฐธ์ ๋ฐํํด์ผ ํ๋ค.
- S๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ
(U)
or[U]
or{U}
์ ํํ๋ก ๊ดํธ์์ ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ- ๊ดํธ๊ฐ ์ง์ด ๋ง๊ฒ ๋ซํ์๋ ๊ฒฝ์ฐ
์๋ฅผ ๋ค์ด
{[()()]}
๋ ๊ดํธ๊ฐ ์๋ง๊ฒ ๋ค์ด์์ง๋ง, ([)()]
๋ ๊ทธ๋ ์ง ๋ชปํ๋ค. (์ง์ ๋ง์ง๋ง ์๋ชป๋ซํ์์)๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ 1, ์๋๋ฉด 0์ ๋ฆฌํดํ์.
ํ์ด
function solution(S) {
const splited = S.split('')
const stack = []
for (let i of splited) {
// ์ฌ๋ ๊ฑฐ
if (i === '{' || i === '[' || i === '(') {
stack.push(i)
} else {
if (stack.size === 0) return 0
// ๋ซ๋ ๊ฒ์ด๋ผ๋ฉด ๊ฐ์ฅ ์ต๊ทผ์ ์ด์๋ ๊ฒ์ด๋ ๋น๊ต ํ๋ค.
const pop = stack.pop()
if (i === ')') {
if (pop !== '(') {
return 0
}
}
if (i === '}') {
if (pop !== '{') {
return 0
}
}
if (i === ']') {
if (pop !== '[') {
return 0
}
}
}
}
return stack.length === 0 ? 1 : 0
}
์ฌ๋ ๊ดํธ๋ผ๋ฉด stack์ ๋ฃ๊ณ , ๋ซ๋ ๊ดํธ๋ผ๋ฉด ์คํ์ ๋งจ์ง๋ง ๊ดํธ์ ๋น๊ตํด์ ์ ์ ํ ๊ดํธ์ธ์ง ํ์ธํ๋ค.