본문 바로가기
코딩테스트/Python

[python] 프로그래머스 괄호 회전하기

by nahkim 2023. 4. 24.

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

📜 접근 방법

  1. 문장(s)의 갯수만큼 반복문 돌린다.
    1. 만약 현재 문장에 괄호가 올바를 경우, (문장에 괄호가 올바르지 않을 경우 넘어간다.)
      1. 갯수(answer) + 1
    2. 맨 앞 문자를 맨 뒤로 보낸다.

 

 

좀더 쉬운 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12909

좀더 쉬운 문제의 풀이 : https://chipndale.tistory.com/98

 

❌ 실패 코드

 

✅ 정답 코드

from collections import deque

# 문장에 괄호가 알맞게 있는지 확인하는 함수
def check_symmetry(s):
    stack = []
    
    for c in s:
        if stack:
            if c == ')':
                c_pop = stack.pop()
                if len(stack) == 0 and c_pop != '(':
                    return False
            elif c == '}':
                c_pop = stack.pop()
                if len(stack) == 0 and c_pop != '{':
                    return False
            elif c == ']':
                c_pop = stack.pop()
                if len(stack) == 0 and c_pop != '[':
                    return False
            else:
                stack.append(c)
        else:
            stack.append(c)
    if stack:
        return False
    return True

def solution(s):
    answer = 0
    dq = deque(s)
    dq_len = len(dq)
    for i in range(dq_len):
        if check_symmetry(dq) == True:
            answer += 1
        pop_c = dq.popleft()
        dq.append(pop_c)
    return answer

 

💡알게 된점

스택, 큐 사용시 deque를 활용해야겠다.