문제 링크 - (프로그래머스 웹사이트로 연결)
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
from collections import deque
def solution(s):
answer = True
deq = deque()
for ele in s:
if ele == '(':
deq.append(ele)
elif deq: # ele = ')'&& deque에 원소가 들어 있을 경우
if deq[-1] == '(':
deq.pop()
else: #deq도 없는데 순회하는 요소가 ')'인 경우
return False
if deq: #다 순회했는데도 deq가 남아있을 경우
return False
return answer
사실 list로 풀어도 되는데, deque 사용법을 배운지 얼마 안 돼서 연습할 겸 deque로 풀어보았다.
(queue 문제일 줄 알았는데 알고보니 stack 문제였다..)
deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.deque.remove(item): item을 데크에서 찾아 삭제한다.deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).