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

문제 설명

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

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

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


제한사항

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

입/출력

입/출력


코드

def solution(s):

    from collections import deque
    answer = True
    deque = deque()
    for str in s:
        if str == '(':
            deque.append(str)
        else:
            if len(deque) == 0 or deque.pop() == ')':
                return False
            
    if len(deque) != 0:
        return False

 

def solution(s):
    li = list()
    for i in s:
        if i == '(':
            li.append(i)
            
        if i == ')':
            try:
                li.pop()
            except IndexError:
                return False
        
    return len(li) == 0
function solution(s){
    var answer = true;
    let sum = 0
    for(let i = 0; i<s.length; i++){
        s[i] ==='(' ?  sum++ : sum--
         if(sum < 0) break
    }
    return sum === 0;
}

결과

 


코드 해석

전체적인 코드는 비슷한 부분이 많기 때문에 하나의 코드만 풀이해보자.

 

1. 제일 먼저 '('를 만나면 deque 나 배열에 append를 한다.

2. 만약 배열의 크기가 0 또는 pop을 하는 것이 ')' 라면 False를 반환한다.

3. 마지막으로 배열의 크기가 0이 아니라면 False를 반환한다.

'Algorithm' 카테고리의 다른 글

[BOJ/백준] 1065번 한수  (0) 2021.01.26
[BOJ/백준] 4673번 셀프 넘버  (0) 2021.01.26
[BOJ/백준] 1874번 스택 수열  (0) 2021.01.25
[BOJ/백준] 4949번 균형잡힌 세상  (0) 2021.01.25
[프로그래머스] 카펫  (0) 2021.01.22
<