본문 바로가기
Programmers (코딩 테스트 연습)

올바른 괄호 (연습문제, Level 2)

by xangmin 2021. 1. 14.
반응형

문제 설명

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

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

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

 

제한사항

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

 

입출력 예

s answer
"()()" True
"(())()" True
")()(" False
"(()(" False

 

solution.py

def solution(s):
    if len(s) % 2 == 0:
        for i in range(len(s) // 2):
            s = s.replace("()", "")
            print(i, s)
            if len(s) == 0:
                return True
    else :
        return False

    if len(s) > 0:
        return False

 

결과 및 고찰

 작성한 코드는 효율성 테스트에서 성공하지 못한 코드이다.

하지만, 효율성을 최대화 하여 프로그래밍을 한 예시이다. 효율성을 따지기 위해서는 아래 코드와 비교해보면 좋을 것이다.

 

- solution.py

def solution(s):
    answer = True
    Queue = []
    for i in s: 
        if i == '(': Queue.append('(')
        else: 
            try: Queue.pop() 
            except: return False
    if len(Queue) == 0: return True
    else: return False

 

- 풀이

'('가 들어오면 넣고 ')'가 들어오면 빼는 형식

  • ')'가 들어올때, Queue가 비어있으면 False를 반환
  • 모든 괄호를 넣고 뺐을 때, Queue가 비어있지 않으면 False를 반환
반응형

댓글