관리 메뉴

나예

[프로그래머스] 괄호 회전하기(파이썬, 스택) 본문

카테고리 없음

[프로그래머스] 괄호 회전하기(파이썬, 스택)

나예_ 2023. 7. 26. 00:05

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 코드

def solution(s):
    answer = 0
    
    for i in range(len(s)):
        rotation = s[i:]+ s[:i]
        stack=[]
        flag =1
        for x in rotation:
            if x == '{' or x== '[' or x == '(':
                stack.append(x)
            else:
                if len(stack) ==0:
                    flag = 0
                    break
                else:
                    if (stack[-1]=='(' and x ==')') or (stack[-1]=='[' and x ==']') or (stack[-1]=='{' and x =='}') : 
                        stack.pop()
                    else:
                        flag = 0
        
        if flag ==1 and len(stack) == 0 :
            answer +=1
                
        
    return answer

3. 풀이

(1) 회전한 문자열 구하기

rotation이라고 회전한 문자열을 저장하는 변수

rotation은 문자열 슬라이싱으로 만듦

 

(2) 문자열의 문자를 하나하나 보면서 짝 맞나 확인

괄호의 짝은 stack을 이용!

이때 짝맞나 확인 여부는 flag로 표시 ( flag=1이면 짝 맞음 0이면 짝 안맞음 )

 

(3) 최종 확인

flag가 1이고 stack에 남이있는게 없으면 answer +=1

 

728x90