bong-u/til

프로그래머스 - 괄호 회전하기 (L2)

수정일 : 2023-08-28

 1def check(string):
 2    stack = []
 3    for i in string:
 4        if i == '(' or i == '{' or i == '[':
 5            stack.append(i)
 6        else:
 7            if len(stack) == 0:
 8                return False
 9            if i == ')':
10                if stack[-1] != '(': return False
11            if i == '}':
12                if stack[-1] != '{': return False
13            if i == ']':
14                if stack[-1] != '[': return False
15            stack.pop()
16    if len(stack) != 0: return False
17    return True
18
19def solution(s):
20    s = list(s)
21    result = 0
22    for i in range(len(s)):
23        if check(s):
24            result += 1
25        s.append(s.pop(0))
26    return result

문제

  • 괄호를 포함하는 문자열 S가 주어진다
  • 문자열 S를 왼쪽으로 x(0 <= x < s의 길이)만큼 왼쪽으로 회전시켰을때 S가 올바른 괄호 문자열이 되게하는 x의 개수를 구하라
  • TC
    • input

      {}”

    • ouput

      3

해결방법

  • S를 왼쪽으로 한 칸씩 당기면서 check함수를 호출한다
  • check함수에서는 스택을 이용하여 매개로 받은 문자열이 올바른 괄호 문자열인지 판단한다