[문제풀이] 올바른 괄호

HKoiKoi·어제

코딩 테스트

목록 보기
9/13
post-thumbnail

문제

올바른 괄호

문제 설명

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

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

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


제한사항

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

입출력 예시

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

문제 풀이

공통적으로 ')'가 먼저 먼저 나오면 절대 올바른 괄호는 나올 수 없다.

예를 들어 3번 예시에서 ) 이 나오는 순간 짝을 잃기 때문에 바로 False를 반환해야 한다.

수를 이용해서 푼 방법

'('이 나오면 1, ')'이 나오면 0이 되도록 설정하면
올바른지 올바르지 않은지 판단할 수 있다.

  1. '('
    • '('이므로 +1
    • 카운트 = 1
  2. ')'
    • ')'이므로 -1
    • 카운트 = 0
  3. '('
    • '('이므로 +1
    • 카운트 = 1
  4. ')'
    • ')'이므로 -1
    • 카운트 = 0

0이면 올바른 괄호이므로 True, 0이 아니면 올바르지 않은 괄호이므로 False를 반환하면 된다.

def solution(s):
    pair = 0
    
    for c in s:
    	if c == "(":
        	pair += 1
        else:
        	pair -= 1
        
        if pair < 0:
        	return False
            
    return pair == 0

0개의 댓글