🌞Algorithm/🔥programmers

[programmers] 괄호 회전하기 - 월간 코드 챌린지 시즌2

뿌야._. 2021. 9. 7. 15:49

<괄호 회전하기>

문제(출처: 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