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

한재창·2023년 4월 24일
0

올바른 괄호

문제 설명

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

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

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

제한사항

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

입출력 예

sanswer
"()()"true
"(())()"true
")()("false
"(()("()"false

입출력 예 설명

  • 입출력 예 #1,2,3,4
    • 문제의 예시와 같습니다.

나의 풀이

  1. s의 처음 문자가 ), 마지막 문자가 ( 라면 false를 return 한다.
  2. count 라는 변수를 하나 만들고 기본값은 0으로 준다.
  3. for 문을 돌리고 s[i]의 값이 ( 일 때 count를 1 증가하고, 아니라면 1 빼준다.
  4. ( 일 때는 1씩 증가하는데, 나중에 )가 나올 수 있기 때문에 계속 진행하고 )가 연속 두번 나오면 false, 즉 -1 이기때문에 결국엔 false를 반환한다.
  5. 위 경우가 아닌 경우에는 마지막까지 검사를 진행하여 count 가 0이라면 true 아니라면 false를 반환한다.
function solution(s){
    if(s[0] === ')' || s[s.length-1] === '(') {
        return false
    }
    
    let count = 0;
    for(let i=0; i<s.length; i++) {
        if(s[i] === '(') {
            count++;
        } else {
            count--;
        }
        
        if(count < 0) {
            return false;
            }
    }
    return count === 0 ? true : false
}
profile
취준 개발자

0개의 댓글