Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- Backtracking
- 통계학
- 소트
- DFS
- 코테
- 프로그래머스
- 월간 코드 챌린지 시즌2
- 404에러
- 다익스트라
- 덩치
- 그리디알고리즘
- 코딩테스트
- Python
- 파이썬
- 2중포문
- 백트래킹
- 동적
- 백준
- 스프링
- 동적계획법
- 퇴각검색
- 최단거리
- 정렬
- 그리디
- sort
- 브루트포스
- 스프링프레임워크
- 최빈값
- 소트인사이드
- 스택
Archives
- Today
- Total
취준생의 코딩테스트 연습기
[프로그래머스] 괄호 회전하기 / 파이썬(python) 본문
# 문제 링크
programmers.co.kr/learn/courses/30/lessons/76502
# Soultion
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
30
31
|
from collections import deque
def solution(s):
str = deque(s)
answer = 0
for j in range(len(str)):
stack = []
for i in str:
if i=='(' or i=='{' or i=='[':
stack.append(i)
elif not stack:
stack.append('-')
break
elif i==')' and stack[-1]!='(':
stack.append('-')
break
elif i=='}' and stack[-1]!='{':
stack.append('-')
break
elif i==']' and stack[-1]!='[':
stack.append('-')
break
else:
stack.pop()
if len(stack)==0:
answer+=1
str.append(str.popleft())
return answer
|
cs |
1. 스택에 저장된 맨앞의 요소를 뽑아내기위해 deque를 불러왔다.
3. 원래 문자열을 deque로 변환해준다.
4. 카운팅을 세기위한 변수
6. 문자열의 길이만큼 회전을 시키기위한 for문
7. 괄호가 제대로 표현이 되어있는지 확인하기위한 스택이다.
8. 문자열을 앞에서부터 한개씩 확인한다.
9. 여는 괄호이면 스택에 저장해준다.
11. 닫는 문자열이 나왔는데 스택이 비어있으면 바로 종료한다.
14~20. 닫는 문자열이면 stack에 담겨있는 맨위에 괄호와 일치하는지 확인한다.
23. 나머지 경우는 정상이므로 stack에 있는 top을 꺼내준다.
25. for문을 다 돌고난 뒤, 스택이 비어있으면 괄호가 올바르게 표현된것이므로 answer에 +1을 해준다.
28. 문자열을 회전시키기위한 코드이다. deque에 있는 popleft()함수를 이용하여 간단하게 표현했다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 / 파이썬(python) (0) | 2021.05.13 |
---|---|
[프로그래머스] 음양 더하기 / 파이썬(python) (0) | 2021.05.01 |
[프로그래머스] 가장 큰 수 / 파이썬(python) (0) | 2021.04.02 |
[프로그래머스] 배달 / 파이썬(python) - 도전중 (0) | 2021.03.17 |
[프로그래머스] 주식가격 / 파이썬(python) (0) | 2021.03.16 |
Comments