Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 프로그래머스 LV.02 - 괄호 회전 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/76502
Spring 공부한다고 잠시 놓고 있었던 1일 1 PS를 다시 시작했다.
그저께 부터 시작이었는데.. 삼성 기출을 3번은 돌리고 싶어서 이전에 풀지 않았던 문제들 풀려고 했다가
머리 털 다 뽑히고 한문제 겨우 풀어냈다.. 하하!
삼성 기출은 정말 어렵다 ㅠㅠ 한달 뒤에 나는 잘 풀어낼 수 있는 실력을 가졌으면 하는 바람..
그래서 오늘은 프로그래머스 2단계에 새로운 문제들이 추가됐길래 가볍게 풀어보았다.
[ 알고리즘 ]
단순구현
[ 자료구조 ]
큐,스택
[문제 접근]
말은 뭔가 복잡하게 써놨지만, 그냥 단순히 모두가 알고있는 올바른 괄호 찾기 문제의 응용버전이다.
주의해야할 점은 괄호의 종류가 3개이므로 3번을 체크해주어야한다.
좀 더 편리하게 비교하기 위해서 dictionary로 열고 닫는 괄호들을 매핑해주었다.
조건에 부합하면 괄호 비교를 해주고 부합하지 않으면 count 하지 않고 popleft해서 append로 뒤쪽에 붙여주었다.
[코드]
from collections import deque
import copy
def solution(s):
answer = 0
List = deque(list(s))
dic = {'(': ')', '{': '}', '[': ']'}
closed = set([']', '}', ')'])
for _ in range(len(s)):
if List[0] in closed:
List.append(List[0])
List.popleft()
continue
else: # 여는 괄호
que = deque()
check = 0
temp = copy.deepcopy(List)
List.append(List[0])
List.popleft()
que.append(temp.popleft())
for j in range(len(s) - 1):
if temp[j] in closed:
if len(que) == 0:
check = -1
break
else:
p = que.pop()
if dic[p] == temp[j]:
continue
else:
check = -1
break
else:
que.append(temp[j])
if check == 0 and len(que) == 0:
answer += 1
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 프로그래머스 LV.02 - 2개 이하로 다른 비트 (0) | 2021.07.01 |
---|---|
[Python] LV.02 - 행렬 테두리 회전하기 (0) | 2021.06.30 |
[Python] 백준 #1932 정수 삼각형 (0) | 2021.06.17 |
[Python] 백준 #1874 스택 수열 (0) | 2021.06.12 |
[Python] 백준 #2493 탑 (0) | 2021.06.12 |
Comments