728x90
반응형
1. 문제 설명
2. 풀이과정
- 빠른 연산에 용이한 deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
- 괄호를 회전한 결과를 저장할 deque을 생성한다. queue = deque()
- 초기 괄호의 상태를 deque 자료구조로 추가한다. queue.append(deque(s))
- 다음부터 괄호 길이 전까지 for _ in range(1, len(s))
- 문자열을 deque 자료구조로 저장한다. s = deque(s)
- 문자열에서 가장 앞 괄호를 제거하고 제거한 괄호를 맨 뒤에 추가한다. s.append(s.popleft())
- 괄호를 회전한 결과를 추가한다. queue.append(s)
- 괄호를 회전한 결과를 모두 저장했으면 저장한 결과를 하나씩 추출하여 올바른 괄호인지 확인한다. for i in queue
- 올바른 괄호를 판별하기 위해 사용할 deque을 생성한다. stack = deque()
- 올바른 괄호인지 나타낼 변수를 생성하고 초기화한다. state = True
- 괄호를 하나씩 추출하여 for j in i
- 만약 여는 괄호이면 if (j == '(' or j == '{' or j == '[')
- stack에 추가한다. stack.append(j)
- 반면에 닫는 괄호일 경우 else
- stack이 공백이 아니면 if (len(stack) > 0)
- stack에서 가장 마지막 원소를 삭제하고 삭제한 값이 닫는 괄호와 동일한 종류의 여는 괄호이면 if (j == ')' and stack.pop() == '(') or (j == '}' and stack.pop() == '{') or (j == ']' and stack.pop() == '[')
- 아직까진 올바른 괄호이다. state = True
- 동일한 여는 괄호가 아니면 else
- 올바른 괄호가 아니므로 틀림을 나타내고 종료한다. state = False break
- 반면에 stack이 공백이면 else
- 올바른 괄호가 아니므로 틀림을 나타내고 종료한다. state = False break
- 괄호 판별이 끝나고, 올바른 괄호이며 stack이 공백으로 끝나면 if (state and len(stack) == 0)
- 올바른 괄호 횟수에 1을 더한다. answer += 1
반응형
3. 소스코드
from collections import deque
def solution(s):
answer = 0
queue = deque()
queue.append(deque(s))
for _ in range(1, len(s)):
s = deque(s)
s.append(s.popleft())
queue.append(s)
for i in queue:
stack = deque()
state = True
for j in i:
if (j == '(' or j == '{' or j == '['):
stack.append(j)
else:
if (len(stack) > 0):
if (j == ')' and stack.pop() == '(') or (j == '}' and stack.pop() == '{') or (j == ']' and stack.pop() == '['):
state = True
else:
state = False
break
else:
state = False
break
if (state and len(stack) == 0):
answer += 1
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] n^2 배열 자르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
---|---|
[프로그래머스] H-Index - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 연속 부분 수열 합의 개수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 2016년 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 귤 고르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |
[프로그래머스] 추억 점수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |
[프로그래머스] 콜라 문제 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |
[프로그래머스] 멀리 뛰기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |