데이터사이언스 기록기📚

[프로그래머스] Level 2_올바른 괄호(스택/큐) 본문

Coding Test/프로그래머스(Python)

[프로그래머스] Level 2_올바른 괄호(스택/큐)

syunze 2022. 9. 8. 22:03

문제 유형

스택/큐

 

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

1차 시도(정확성 54.1, 효율성 30.5, 총 84.6)

def solution(s):
    cnt_1, cnt_2 = 0,0
    
    # case 1. )부터 나오는 경우
    if s[0] == ')':
        return False
        
    # 괄호 개수 세기
    for i in range(len(s)):
        if s[i] == '(':
            cnt_1 += 1
        else:
            cnt_2 += 1
    
    # case 2. 괄호 개수 다르면 False
    if cnt_1 == cnt_2:
        return True
    else:
        return False

2차 시도(통과)

  • 14번째 줄 예시 '())(()'
    → cnt_1이 음수로 내려가면 짝이 맞지 않음
  • 최종 cnt_1이 0이 아닌 경우 → 짝이 맞지 않음
def solution(s):
    cnt_1 = 0
    
    # )부터 나오는 경우 -> False
    if s[0] == ')':
        return False
    
    # '('인 경우 1 더하고 ')'인 경우 1 빼기 -> cnt_1이 중간에 음수가 되면 짝이 안 맞는 것 
    for i in range(len(s)):
        if s[i] == '(':
            cnt_1 += 1
        else:
            cnt_1 -= 1
        
        if cnt_1 < 0:
            return False
            
    # cnt_1이 0일 때만 True, 이외는 False   
    if cnt_1 != 0:
        return False
    else:
        return True

 

 

728x90
Comments