๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ์๊ณ ๋ฆฌ์ฆ
- algorithm
- SW์ญ๋ํ ์คํธ
- BFS
- DFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ํ์ด์ฌ
- ์๋ฃ๊ตฌ์กฐ
- ์คํ
- ํํ
- ๊ทธ๋ํ
- Blind
- ๋ฐฑ์ค
- SSAFY
- ์ผ์ฑ
- sort
- ์ฝํ
- boj
- ํ๋ก๊ทธ๋๋จธ์ค
- ์์ ํ์
- ์ธํผ
- SWEA
- DP
- Backjoon
- ์ฝ๋ฉํ ์คํธ
- javascript
- kakao
- ์นด์นด์ค
- Python
- ์๋ฐ์คํฌ๋ฆฝํธ
Archives
- Today
- Total
๋ง์ํ
[javascript] ํ๋ก๊ทธ๋๋จธ์ค - ๊ดํธ ํ์ ํ๊ธฐ(์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2) ๋ณธ๋ฌธ
Algorithm Problem/JavaScript
[javascript] ํ๋ก๊ทธ๋๋จธ์ค - ๊ดํธ ํ์ ํ๊ธฐ(์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2)
deo2kim 2021. 8. 14. 13:27๋ฐ์ํ

๐ค๋ฌธ์ ํด๊ฒฐ
- ๊ดํธ ํ์
- ๊ดํธ ์ฒดํฌ
- ์คํ์ ์ด์ฉํ์ฌ ๊ดํธ์ ์ง์ด ๋ง๋์ง ์ฒดํฌ
- ์ฃผ์ด์ง ๊ดํธ(ํ์ ์ ๋ง์น ๊ดํธ)๋ฅผ ์ชผ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค
- ๊ฐ์ ธ์จ ๊ดํธ๊ฐ ์ผ์ชฝ ๊ดํธ์ด๋ฉด ์คํ์ ๋ฃ๊ณ
- ์ค๋ฅธ์ชฝ ๊ดํธ์ด๋ฉด ์คํ์ ์ ์ผ ์์์๋ ๊ดํธ์ ๋น๊ตํ์ฌ ์ง์ด ๋ง๋์ง ์ฒดํฌ
- ์ง์ด ๋ง์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
- ์คํ์ด ๋น์ด์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
- ๊ดํธ ์ฒดํฌ๊ฐ ๋๋๊ณ ์คํ์ ๋จ์์๋ ๊ดํธ๊ฐ ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค
- ์ฃผ์ด์ง ๊ดํธ(ํ์ ์ ๋ง์น ๊ดํธ)๋ฅผ ์ชผ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค
- ์คํ์ ์ด์ฉํ์ฌ ๊ดํธ์ ์ง์ด ๋ง๋์ง ์ฒดํฌ
๐จ ์ค๋ธ์ ํธ์ ํค, ๋ฐธ๋ฅ ๊ฐ์ ธ์ค๊ธฐ: 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;
}
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋ฐ์ํ