스택 - 괄호 짝 맞추기

은아·2023년 12월 28일
0

코딩테스트

목록 보기
1/5

출처: https://wikidocs.net/223100

소괄호는 짝을 맞춘 열린 괄호 ‘(’와 닫힌 괄호 ‘)’로 구성합니다. 문제에서는 열린 괄호나 닫힌 괄호가 마구 뒤섞인 문자열을 줍니다.

이때 소괄호가 정상으로 열고 닫혔는지 판별하는 solution( ) 함수를 구현하세요. 만약 소괄호가 정상적으로 열고 닫혔다면 True를, 그렇지 않다면 False를 반환하면 됩니다.

  • 제약조건
    열린 괄호는 자신과 가장 가까운 닫힌 괄호를 만나면 상쇄됩니다.
    상쇄 조건은 열린 괄호가 먼저 와야 하고, 열린 괄호와 닫힌 괄호 사이에 아무것도 없어야 합니다.
    더 상쇄할 괄호가 없을 때까지 상쇄를 반복합니다.

  • 입출력의 예

def solutions(s):
	stack = []
    
    for c in s: # 문자열을 앞에서 하나씩 보며 열린 괄호가 나오면 push
    	if c == "(":
    		stack.append(c)
        
    	elif c == ")": # 닫힌 괄호가 나오면 pop 연산을 통해 문자열에서 열린 괄호, 닫힌 괄호 한 쌍을 상쇄
    		if not stack:
        		return False
        	else:
        		stack.pop()
                
	# 1~2를 마지막 문자열까지 반복해 스택에 열린 괄호가 남아 있다면 짝이 맞지 않은 것(False)이고, 
    # 괄호가 남아 있지 않다면 짝이 맞은 것(True)으로 판단    
	if stack:
    	return False
    else:
    	return True
profile
Junior Developer 개발 기술 정리 블로그

0개의 댓글