https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(s):
answer = 0
for i in range(len(s)):
arr = []
s = s[1:] + s[0] #왼쪽으로 한 칸씩 이동
if s[0] == '[' or s[0] == '(' or s[0] == '{':
for item in s:
if len(arr) == 0:
arr.append(item)
else:
if arr[-1] == '[' and item == ']':
arr.pop()
elif arr[-1] == '(' and item == ')':
arr.pop()
elif arr[-1] == '{' and item == '}':
arr.pop()
else:
arr.append(item)
if len(arr) == 0:
answer += 1
return answer
스택에 괄호를 하나씩 추가하고, 이전 괄호와 추가할 괄호의 쌍이 맞으면 pop하여 스택의 길이를 확인하는 방식으로 풀었다.
스택의 길이가 0이 아닐 경우 쌍이 맞지 않는 괄호가 존재하는 것이다.
반복을 줄이고자 if s[0] == '[' or s[0] == '(' or s[0] == '{': 행을 통해 여는 괄호인 경우만 계산하도록 했는데, 다른 사람의 풀이를 보면 굳이 없어도 될 것 같기도 하다.
'코딩테스트 > Python' 카테고리의 다른 글
| [프로그래머스][파이썬] 할인 행사 (1) | 2023.12.07 |
|---|---|
| [프로그래머스][파이썬] n^2 배열 자르기 (0) | 2023.12.06 |
| [프로그래머스][파이썬] 연속 부분 수열 합의 개수 (2) | 2023.12.05 |
| [프로그래머스][파이썬] 귤 고르기 (2) | 2023.12.05 |
| [프로그래머스][파이썬] 이웃한 칸 (0) | 2023.11.29 |