프로그래머스(Python)/Level2

[프로그래머스] '올바른 괄호' 알고리즘 풀이 - Python

Jinomad 2020. 10. 21. 11:54

Contents

  1. 문제 설명

    [제한사항]

    [입출력 예]
  2. 알고리즘 분석 

    [나의 풀이]

    [Most 1 의 풀이]

 

문제 설명

 

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

 

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

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

 

 

제한사항

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

 

 

입출력 예

s return
"()()" true
"(())()" true
")()(" false
"(()(" false


알고리즘 분석

 

  • 나의 풀이
# 시간 초과 : 효율성 테스트 실패
def solution(s):
    bracket = '()'
    while bracket in s: # s에 올바른 괄호가 있을 경우 
        if s[0] == ')' or s[-1] == '(': # 처음과 마지막에 틀린 괄호가 있을 경우 
        	return False
        s = s.replace(bracket, '') # 올바른 괄호를 모두 지움 
    print(s)
    if s:
        return False
    else:
        return True
        

 

 

  • 나의 풀이 2 
def solution(s):
    check = 0 
    left, right = '(', ')'
    for str in s:
        if check < 0: # check가 0보다 작을 경우 
            return False
        if str is left: # str이 '('일 경우 
            check += 1
        else: # ')'일 경우 
            check -= 1
    return check == 0 # check가 0이면 True 

 

 

 

 

코딩테스트 연습 - 올바른 괄호

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

programmers.co.kr