<괄호 회전하기>
문제(출처: https://school.programmers.co.kr/learn/courses/30/lessons/76502)
문제 풀이
- my solution
def solution(s):
answer = 0
for i in range(len(s)):
stack=[]
check=True
for j in s: # 올바른 괄호인지 판별
if j=='[' or j=='(' or j=='{': # 왼쪽 괄호 _ 추가
stack.append(j)
elif j==']': # 각 짝에 맞는 괄호일 경우 제거, 아니면 check=False
if len(stack)!=0 and stack[-1]=='[':
stack.pop()
else:
check=False
elif j==')':
if len(stack)!=0 and stack[-1]=='(':
stack.pop()
else:
check=False
else:
if len(stack)!=0 and stack[-1]=='{':
stack.pop()
else:
check=False
if check==True and len(stack)==0: # 올바른 괄호라면
answer+=1
s=s[1:]+s[0] # s를 왼쪽으로 x칸만큼 회전
return answer
Level 2라길래 살짝 아주 조금 겁을 먹었지만 생각보다 많이 안 어려웠던 문제이다.
문제에서 알려준 내용 따라서 구현하면 끝 😏
1) 올바른 괄호인지 판별
① [, (, { 와 같이 왼쪽 괄호일 경우 stack에 저장
② stack의 마지막에 있는 왼쪽 괄호와 짝이 맞을 경우 stack에서 제거
③ 올바른 괄호이며 stack의 길이가 0일 경우 올바른 괄호 문자열로 판별
2) s를 왼쪽으로 x칸만큼 회전
① 문자열이므로 반복문을 사용하여 왼쪽으로 한칸씩 넘긴 값을 s에 저장
생각🤔
문제가 조금 쉬웠던 것 같지만 그래도 쉽게 풀어서 기분이 좋았다.
그런데 조금 코드에서 반복되는 부분이 많은 것 같아서 쪼끔 아주 쪼끔 맘에 안 든다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 방문 길이 - Summer/Winter Coding(~2018) (1) | 2021.09.09 |
|---|---|
| [programmers] [3차] n진수 게임 - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.08 |
| [programmers] 괄호 변환 - 2020 KAKAO BLIND RECRUITMENT (0) | 2021.09.06 |
| [programmers] [3차] 파일명 정렬 - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.04 |
| [programmers] 튜플 -2019 카카오 개발자 겨울 인턴십 (1) | 2021.09.04 |