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

2026. 5. 30. 23:58·Algorithm Solving

 

 

문제 링크

 

구분

코딩테스트 연습 > 월간 코드 챌린지 시즌2

 

 

문제 설명

다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.

  • (), [], {} 는 모두 올바른 괄호 문자열입니다.
  • 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.
  • 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.

대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.


제한사항
  • s의 길이는 1 이상 1,000 이하입니다.

입출력 예
s result
"[](){}" 3
"}]()[{" 2
"[)(]" 0
"}}}" 0

입출력 예 설명

입출력 예 #1

  • 다음 표는 "[](){}" 를 회전시킨 모습을 나타낸 것입니다.

xs를 왼쪽으로 x칸만큼 회전올바른 괄호 문자열?

0 "[](){}" O
1 "](){}[" X
2 "(){}[]" O
3 "){}[](" X
4 "{}[]()" O
5 "}[](){" X
  • 올바른 괄호 문자열이 되는 x가 3개이므로, 3을 return 해야 합니다.

입출력 예 #2

  • 다음 표는 "}]()[{" 를 회전시킨 모습을 나타낸 것입니다.

xs를 왼쪽으로 x칸만큼 회전올바른 괄호 문자열?

0 "}]()[{" X
1 "]()[{}" X
2 "()[{}]" O
3 ")[{}](" X
4 "[{}]()" O
5 "{}]()[" X
  • 올바른 괄호 문자열이 되는 x가 2개이므로, 2를 return 해야 합니다.

입출력 예 #3

  • s를 어떻게 회전하더라도 올바른 괄호 문자열을 만들 수 없으므로, 0을 return 해야 합니다.

입출력 예 #4

  • s를 어떻게 회전하더라도 올바른 괄호 문자열을 만들 수 없으므로, 0을 return 해야 합니다.

 

 

 

 

문제 풀이

파이썬에는 rotate라는 메소드가 있구나!! 

몰랐어서 처음에는

for _ in range(i):

n = d.popleft()

d.append(n) 으로 진행했었다.

 

괄호 푸는 문제는 자주 나오니 꼭 숙지해두자!

from collections import deque

def solution(s):
    
    answer = 0
       
    for i in range(len(s)):
        d = deque(s)
        d.rotate(-i)
        temp = deque()
        
        for j in d:
            
            if len(temp) == 0:
                temp.append(j)
            else :
                if (j=='}' and temp[-1] == '{') or (j==']' and temp[-1] == '[') or (j==')' and temp[-1] == '(') :
                    temp.pop()
                else :
                    temp.append(j)
                    
        if len(temp) == 0:
            answer += 1
        
    return answer

'Algorithm Solving' 카테고리의 다른 글

[프로그래머스] LV2. 할인 행사 (파이썬, Python)  (0) 2026.05.31
[프로그래머스] LV2. 멀리 뛰기 (파이썬, Python)  (0) 2026.05.31
[프로그래머스] LV2. 귤 고르기 (파이썬, Python)  (0) 2026.05.28
[프로그래머스] LV2. 카펫 (파이썬, Python)  (0) 2026.05.28
[프로그래머스] LV2. 짝지어 제거하기 (파이썬, Python)  (0) 2026.05.27
'Algorithm Solving' 카테고리의 다른 글
  • [프로그래머스] LV2. 할인 행사 (파이썬, Python)
  • [프로그래머스] LV2. 멀리 뛰기 (파이썬, Python)
  • [프로그래머스] LV2. 귤 고르기 (파이썬, Python)
  • [프로그래머스] LV2. 카펫 (파이썬, Python)
아기꼬래
아기꼬래
  • 아기꼬래
    아꼬의 개발 일지
    아기꼬래
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 프로젝트 및 공모전 (4)
        • Oracle 프로젝트 (3)
      • Algorithm Solving (26)
      • SQL (9)
      • Data Analysis (12)
      • AI (0)
      • FastAPI (0)
      • Spring Boot (0)
      • Oracle (1)
      • AWS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오라클 프로젝트
    일경험
    파이썬
    Oracle
    Algorithm
    coding test
    프로그래머스
    일경험 프로젝트
    Oracle 프로젝트
    SQL
    한국오라클
    data analysis
    데이터시각화
    python
    미래내일 일경험
    Tableau
    태블로
    시각화
    Oracle 일경험
    Algorithm Solving
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
아기꼬래
[프로그래머스] LV2. 괄호 회전하기 (파이썬, Python)
상단으로

티스토리툴바