๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
- ๊ดํธ ํ์
- ๊ดํธ ์ฒดํฌ
- ์คํ์ ์ด์ฉํ์ฌ ๊ดํธ์ ์ง์ด ๋ง๋์ง ์ฒดํฌ
- ์ฃผ์ด์ง ๊ดํธ(ํ์ ์ ๋ง์น ๊ดํธ)๋ฅผ ์ชผ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค
- ๊ฐ์ ธ์จ ๊ดํธ๊ฐ ์ผ์ชฝ ๊ดํธ์ด๋ฉด ์คํ์ ๋ฃ๊ณ
- ์ค๋ฅธ์ชฝ ๊ดํธ์ด๋ฉด ์คํ์ ์ ์ผ ์์์๋ ๊ดํธ์ ๋น๊ตํ์ฌ ์ง์ด ๋ง๋์ง ์ฒดํฌ
- ์ง์ด ๋ง์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
- ์คํ์ด ๋น์ด์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
- ๊ดํธ ์ฒดํฌ๊ฐ ๋๋๊ณ ์คํ์ ๋จ์์๋ ๊ดํธ๊ฐ ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค
- ์ฃผ์ด์ง ๊ดํธ(ํ์ ์ ๋ง์น ๊ดํธ)๋ฅผ ์ชผ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค
- ์คํ์ ์ด์ฉํ์ฌ ๊ดํธ์ ์ง์ด ๋ง๋์ง ์ฒดํฌ
๐จ ์ค๋ธ์ ํธ์ ํค, ๋ฐธ๋ฅ ๊ฐ์ ธ์ค๊ธฐ: Object.keys(my_object), Object.values(my_object)
๐จ ๋ฐฐ์ด์ ํน์ ์์ ํฌํจ ์ฌ๋ถ: my_list.includes(my_elem)
๐ป์์ค ์ฝ๋
function solution(s) {
var answer = 0;
var length = s.length;
if (length % 2 == 1) return 0; // ๊ดํธ์ ๊ฐ์๊ฐ ์ง์๊ฐ ์๋๋ฉด false
for (var i = 0; i < length; i++) {
var rotatedS = s.substring(i, length) + s.substring(0, i);
if (isParenRight(rotatedS)) answer++;
}
return answer;
}
function isParenRight(paren) {
var parenCouple = { '[': ']', '{': '}', '(': ')' };
var parenList = paren.split('').reverse();
var stack = [];
while (parenList.length > 0) {
var currentParen = parenList.pop();
if (Object.keys(parenCouple).includes(currentParen)) {
// ์ผ์ชฝ ๊ดํธ์ด๋ฉด stack์ ๋ฃ๊ณ
stack.push(currentParen);
} else {
// ์ค๋ฅธ์ชฝ ๊ดํธ์ด๋ฉด ์คํ์ ์ ์ผ ์ ๊ดํธ์ ๋น๊ต
if (stack.length > 0) {
var beforeParen = stack.pop();
if (parenCouple[beforeParen] !== currentParen) return false; // ์ง์ด ๋ง์ง ์์ผ๋ฉด false
} else {
// ์ค๋ฅธ์ชฝ ๊ดํธ์ด๋ฉด์ ์คํ์ด ๋น์ด์์ผ๋ฉด false
return false;
}
}
}
return true;
}
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋ฐ์ํ