티스토리 뷰

728x90

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

 

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

 

programmers.co.kr

 

  • 해설 :

괄호들로 이루어진 문자열 s가 주어질 때, s를 왼쪽으로 한 칸씩 회전시켜 올바른 괄호 문자열 (모든 괄호들의 짝이 맞는) 이 몇 개 존재하는지 세는 문제이다.

 

 

 

 

  • 풀이 :

첫 번째로 문자열 s의 길이만큼 s의 가장 왼쪽 요소를 가장 뒤에 붙여주는 작업을 구현했고 이 작업이 수행될 때마다 s가 올바른 괄호 문자열인지 판별하는 함수를 구현하였다. 올바른 괄호 문자열인지 확인하는 방법은 stack 자료구조를 사용하여 s의 왼쪽부터 stack에 쌓고 stack의 top이 넣으려는 괄호와 짝이 맞는다면 제거하는 식으로 진행하여 마지막에 stack에 남은 요소가 있는지 확인하는 식으로 구현하였다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def cnt(s):
    check = {
        "}" : "{",
        "]" : "[",
        ")" : "("
    }
    stack = []
    for i in s:
        if stack:
            if i in check:
                if stack[-1== check[i]:
                    stack.pop()
                else:
                    return 0
            else:
                stack.append(i)
        else:
            stack.append(i)
    if stack:
        return 0
    else:
        return 1
 
def solution(s):
    answer = 0
    for _ in range(len(s)):
        answer += cnt(s)
        s = s[1:]+s[0]
    return answer
cs
320x100
댓글
© 2022 WonSeok, All rights reserved