본문 바로가기

프로그래머스 풀이

프로그래머스 2단계 - 괄호 회전하기 (Python)

깃허브:

https://github.com/MSIQOC/Programmers/blob/main/%EA%B4%84%ED%98%B8%ED%9A%8C%EC%A0%84%ED%95%98%EA%B8%B0.py

 

https://programmers.co.kr/learn/courses/30/lessons/76502?language=python3# 

 

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

 

programmers.co.kr

 

올바른 괄호 풀이:

https://msiqoc.tistory.com/27

 

프로그래머스 2단계 - 올바른 괄호 (Python)

깃허브: https://github.com/MSIQOC/Programmers/blob/main/%EC%98%AC%EB%B0%94%EB%A5%B8%EA%B4%84%ED%98%B8.py https://programmers.co.kr/learn/courses/30/lessons/12909?language=python3 코딩테스트 연습 -..

msiqoc.tistory.com

 

 

이 문제를 풀려면 흔하게 나오는 스택을 이용한 올바른 괄호와 관련된 문제를 풀어보면 좋다.

다시 돌아올 때 까지 총 s의 길이만큼 문자 하나씩 회전을 시키고 한번 회전을 시킬 때마다 올바른 괄호인지 체크해주면 된다.

 

알고리즘 풀이 방식:

1. 문자 하나를 왼쪽으로 회전시킨다.

2. 올바른 괄호인지 체크해준다.

 


Python

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(s):
    answer = 0
    for i in range(len(s)):
        stack = []
        s += s[0]
        s = s[1:]
        torf = True
        for j in s:
            if j == '{' or j=='(' or j=='[':
                stack.append(j)
            else:
                if stack == []: #오른쪽 괄호로 시작할 때
                    torf = False
                    break
                if stack[-1]=='{' and j=='}' or stack[-1]=='(' and j==')' or stack[-1]=='[' and j==']':
                        stack.pop()
                else#왼쪽 괄호만 남아있을 때
                    torf = False
                    break
        if stack == [] and torf == True:
            answer += 1
    return answer
cs