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
- 슬라이싱
- 백준
- 파이썬
- 딕셔너리
- not null
- 완전이진트리
- %H
- Inner Join
- 오픽독학
- 구현
- 최대재귀높이
- bfs
- 브루트포스
- 재귀
- 파일명 변경
- 삼중for문 탈출
- dfs
- 복사
- 이진탐색
- 스택
- set
- IH
- Deque
- issubset
- heapq
- 약수구하기
- 우선순위큐
- 제곱근
- 오픽
- date_format
Archives
- Today
- Total
나예
[프로그래머스] 괄호 회전하기(파이썬, 스택) 본문
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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