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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


내 풀이

 

from copy import deepcopy

def solution(s):
    key = {']':'[',')':'(','}':'{'}
    st = []
    new_s = deepcopy(s)
    count =0
    for k in range(len(s)):
        temp=0
        new_s = s[k:] + s[:k]
       
        for i in new_s:
            if i =='[' or i =='(' or i=='{':
                temp +=1                
                st.append(i)
           
            elif i==']' or i ==')' or i=='}':
                temp -=1
                   
                if len(st)==0:        
                    break                  
                else:
                    if key[i] == st[-1]:
                        st.pop()
        if temp ==0 and len(st)==0:
            count +=1
                         
    return count

사람마다 정말 다양한 정답이 나올 수 있을거 같은 문제이다.

그렇지만 대부분은 스택을 썼을꺼라 생각하는데, 오랜만에 풀어서 그런지 너무 더럽게 푼거같다;


다른사람의 풀이

def is_valid(s):
    stack = []
    for ch in s:
        if not stack:
            stack.append(ch)
        elif stack[-1] == '(':
            if ch==')': stack.pop()
            else: stack.append(ch)
        elif stack[-1] == '{':
            if ch=='}': stack.pop()
            else: stack.append(ch)
        elif stack[-1] == '[':
            if ch==']': stack.pop()
            else: stack.append(ch)

    return False if stack else True

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


정처기 실기를 치고 공부하고 시험치고 온다고 한동안 공부를 소홀히 했는데 남은 방학동안 열심히 해봐야 겠다.

 

'취준 > 프로그래머스' 카테고리의 다른 글

성격 유형 검사하기 - 파이썬  (0) 2022.08.31
배달 - 파이썬  (0) 2022.07.27
게임 맵 최단거리 - 파이썬  (0) 2022.07.05
조이스틱 - 파이썬  (0) 2022.07.03
소수 찾기 - 파이썬  (0) 2022.07.02

+ Recent posts