[프로그래머스]올바른 괄호

lee-goeun·2022년 5월 12일
0

문제링크
https://programmers.co.kr/learn/courses/30/lessons/12909

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예

문제풀이

  1. s 문자열을 돌면서 '('이 나오면 1을 더해주고, ')'이 나오면 1을 빼준다.
  2. 합계가 음수가 되면 정답은 false를 넣어주고 반복문을 빠져나온다.
  3. 합계가 0이 아니면 false를 반환한다.

코드

function solution(s){
    var answer = true;
    let num = 0;
    for(let i=0; i<s.length; i++){
        s[i] == '(' ? num++ : num--;
        if(num < 0){
            answer = false;
            break;
        }
    }
    if(num != 0) answer= false;
    return answer;
}
  • es6 함수를 사용하려고 했는데 break가 안된다.

다른사람 코드

function solution(s){
    let cum = 0
    for (let paren of s) {
        cum += paren === '('? 1: -1
        if(cum < 0) {
            return false
        }
    }
    return cum === 0? true: false;
}

굳이 변수 두 개 사용하지 않고 하나로 해도 됐었다.

TIL

  • 변수를 적절하게 쓰자.

0개의 댓글