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 |
Tags
- Deque
- 슬라이싱
- 파이썬
- 딕셔너리
- date_format
- 우선순위큐
- 브루트포스
- issubset
- 오픽독학
- 구현
- heapq
- 약수구하기
- 백준
- dfs
- %H
- IH
- 제곱근
- 재귀
- set
- 오픽
- 스택
- 삼중for문 탈출
- bfs
- 이진탐색
- 최대재귀높이
- not null
- 복사
- Inner Join
- 완전이진트리
- 파일명 변경
Archives
- Today
- Total
나예
[프로그래머스] 괄호 회전하기(파이썬, 스택) 본문
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/76502
2. 코드
def solution(s):
answer = 0
for i in range(len(s)):
rotation = s[i:]+ s[:i]
stack=[]
flag =1
for x in rotation:
if x == '{' or x== '[' or x == '(':
stack.append(x)
else:
if len(stack) ==0:
flag = 0
break
else:
if (stack[-1]=='(' and x ==')') or (stack[-1]=='[' and x ==']') or (stack[-1]=='{' and x =='}') :
stack.pop()
else:
flag = 0
if flag ==1 and len(stack) == 0 :
answer +=1
return answer
3. 풀이
(1) 회전한 문자열 구하기
rotation이라고 회전한 문자열을 저장하는 변수
rotation은 문자열 슬라이싱으로 만듦
(2) 문자열의 문자를 하나하나 보면서 짝 맞나 확인
괄호의 짝은 stack을 이용!
이때 짝맞나 확인 여부는 flag로 표시 ( flag=1이면 짝 맞음 0이면 짝 안맞음 )
(3) 최종 확인
flag가 1이고 stack에 남이있는게 없으면 answer +=1
728x90