티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/76502
- 해설 :
괄호들로 이루어진 문자열 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
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - 프로그래머스 : 모음사전 (0) | 2022.01.21 |
---|---|
(Python) - 프로그래머스 : 두 개 뽑아서 더하기 (0) | 2022.01.20 |
(Python) - 프로그래머스(2020 카카오 인턴십) : 보석 쇼핑 (0) | 2022.01.20 |
(Python) - 프로그래머스 : 전화번호 목록 (0) | 2022.01.19 |
(Python) - 프로그래머스 : 튜플 (0) | 2022.01.19 |
댓글
© 2022 WonSeok, All rights reserved