๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ (12909)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "()()" ๋˜๋Š” "(())()" ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค. ")()(" ๋˜๋Š” "(()(" ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€

programmers.co.kr

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋ฌธ์ž์—ด๋กœ ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.
[ "(())()" : ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ , "))((" : ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ , "((())" : ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ ]

left๊ด„ํ˜ธ, right๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ
๊ฒฝ์šฐ 1. right๊ด„ํ˜ธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ• ๋•Œ => ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.
๊ฒฝ์šฐ 2. left๊ด„ํ˜ธ๋ณด๋‹ค right๊ด„ํ˜ธ๊ฐ€ ํฐ ๊ฒฝ์šฐ => ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.
๊ฒฝ์šฐ 3. ์ตœ์ข…์ ์œผ๋กœ left๊ด„ํ˜ธ์˜ ์ˆ˜์™€ right๊ด„ํ˜ธ์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฅผ ๋•Œ => ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ด ์™ธ์—” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋‹ค.

 

function solution(s){
    var answer = false;
    let leftBracketCnt = 0;
    let rightBracketCnt = 0;   

    for(let i = 0; i < s.length ; i++){
        if(s[0] !== "(") return false;

        if(s[i] === "(") leftBracketCnt += 1;
        else if(s[i] === ")") rightBracketCnt += 1;

        if(leftBracketCnt < rightBracketCnt) return false;
    }
    
    leftBracketCnt === rightBracketCnt ? answer = true : answer = false;

    return answer;
}