코딩 테스트/Level 2

괄호 회전하기

컴닥 2021. 5. 1. 04:45
반응형

괄호 회전하기
월간 코드 챌린지 시즌2 635명 완료

programmers.co.kr/learn/courses/30/lessons/76502

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

참고: comdoc.tistory.com/entry/11-%EC%8A%A4%ED%83%9D%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B4%84%ED%98%B8bracket-%EC%B2%B4%ED%81%AC-%ED%8C%8C%EC%9D%B4%EC%8D%AC?category=800088

 

11. 스택을 이용한 괄호(bracket) 체크, 파이썬

수식에 열고 닫는 괄호 쌍을 체크할 때도 스택을 이용할 수 있습니다. 수식을 인자로 받아 수식에 괄호가 빠졌을 때 나 홀로 있는 괄호의 위치를 반환하는 함수를 구현해 봅시다. 예를 들자면 '2.

comdoc.tistory.com

스택과 큐를 이용하면 어렵지 않게 풀 수 있다. 

def solution(s: str):
    answer = 0
    queue = list(s)
    for _ in range(len(queue)):
        queue.append(queue.pop(0))
        stack = []
        success = True
        for bracket in queue:
            if bracket in ('(', '[', '{'):
                stack.append(bracket)
            else:
                if not stack:
                    success = False
                    break
                if bracket == ')':
                    if stack[-1] == '(':
                        stack.pop()
                    else:
                        success = False
                        break
                elif bracket == ']':
                    if stack[-1] == '[':
                        stack.pop()
                    else:
                        success = False
                        break
                elif bracket == '}':
                    if stack[-1] == '{':
                        stack.pop()
                    else:
                        success = False
                        break
        if success and not stack:
            answer += 1
    return answer

'(((((' 케이스에 유의할 것.

반응형