본문 바로가기

PS

[Programmer] 괄호 회전하기

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

괄호들이 알맞게 짝 지어져 있는지 푸는 문제이다.

def is_valid(s):
    stack = []
    pair = {')': '(', ']': '[', '}': '{'}
    
    for char in s:
        if char in "({[":
            stack.append(char)
        elif char in ")}]":
            if not stack or stack[-1] != pair[char]:
                return False
            stack.pop()
    return not stack  

def solution(s):
    answer = 0
    n = len(s)
    
    for i in range(n):
        rotated = s[i:] + s[:i]  
        if is_valid(rotated):
            answer += 1
            
    return answer

 

나는 스택에 (,{,[ 형태 괄호를 넣고 반대편 기호가 들어오면 빼는 형식으로 진행을 했다.

다른 몇몇 사람들은 파이썬의 replace 메소드를 이용해서 문제를 푸는 것도 보았다.

 

replace가 더 간편하다고 생각한다.