Instructions
Write a function that takes a string of parentheses, and determines if the order of the parentheses is valid. The function should return true if the string is valid, and false if it's invalid.
Examples
"()" => true
")(()))" => false
"(" => false
"(())((()())())" => true
Constraints
0 <= input.length <= 100
Solution
function validParentheses(parens) {
// your code here ..
const str = parens.length
let arr = [];
if( str % 2 !== 0){return false;}
for(let i = 0; i< str ; i++){
switch(parens[i]){
case '(' :
arr.push(')');
break;
default:
if(parens[i] !== arr.pop())
return false
}
}
return arr.length === 0 ? true : false
โพ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋, ํ์๋ ๋ฌด์กฐ๊ฑด false๋ผ๊ณ ์๊ฐ๋์ ๋งค๊ฐ๋ณ์์ ๊ธธ์ด์๋ฅผ ๊ตฌํด์ ํ์๋ผ๋ฉด false๋ฅผ returnํ๊ฒํ๋ค.
โพ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฐพ์์ ๋ง์ผ๋ฉด ์ด๋๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋์ง ์์๊น?๋ผ๊ณ ์๊ฐํ๋ค. for๋ฌธ์ ์ฌ์ฉํด์ ์ธ๋ฑ์ค๋ฅผ ๋ฝ์ ์ ์๊ฒ ํ๋ค. )
โพ switch ๋ฌธ์ switch ๋ฌธ์ condition์ ํ๊ฐํ์ฌ ๊ทธ ๊ฐ๊ณผ ์ผ์นํ๋ ํํ์์ ๊ฐ๋ case ๋ฌธ์ผ๋ก ์คํ ์์๋ฅผ ์ด๋์ํจ๋ค.
โพ switch๋ฌธ์ ์ธ๋ฑ์ค๋ณ๋ก '(' ๊ดํธ์ผ ๋ ๋น ๋ฐฐ์ด ๊ฐ์ ')'์ ๋ฃ์ด์ฃผ๊ณ ์ธ๋ฑ์ค๊ฐ์ ํด๋นํ๋ ๊ดํธ์ ๋ง์ง๋ง ๊ดํธ๊ฐ ๊ฐ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๊ฒ ํด์ค๋ค. ์ด ๋ ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ฉด ๊ฐ์ฅ ๋์ค์ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ฅผ pop()์ผ๋ก ์ฌ๋ผ์ง๊ฒ ํด์ ๊ฐ์์ง ํ์ธํด์ค๋ค.
โพ pop() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ง์ ๋ฝ์๋ธ๋ค.
โพ arr ๋ฐฐ์ด์ด ๋ค ์ฌ๋ผ์ ธ์ ๋น ๊ฐ์ด๋ฉด true๋ฅผ ๋ฐํํ๋ค.
Other Solution
function validParentheses(parens){
var n = 0;
for (var i = 0; i < parens.length; i++) {
if (parens[i] == '(') n++;
if (parens[i] == ')') n--;
if (n < 0) return false;
}
return n == 0;
}
'๊ฐ๋ฐ > ๐ฌ ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leeCode/์ฝํ ๊ณต๋ถ] 2625. Flatten Deeply Nested Array (0) | 2023.08.21 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] .val ๊ณผ .next ์ ๋ป์? (0) | 2022.12.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฅ - ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2022.03.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] 124๋๋ผ์ ์ซ์ - ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2022.03.17 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ โ ์๋ฐ์คํฌ๋ฆฝ (0) | 2022.03.16 |