본문 바로가기
코딩테스트/코딩테스트 문제

코딩테스트 준비 - 프로그래머스: 괄호 회전하기 풀이 (파이썬)

by 공부가싫다가도좋아 2021. 7. 2.
반응형

프로그래머스: 괄호 회전하기 풀이


문제풀러가기

https://programmers.co.kr/learn/courses/30/lessons/76502?language=python3 

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr


비슷한 문제

2021.07.01 - [코딩테스트/코딩테스트 문제] - 코딩테스트 준비 - 프로그래머스: 괄호 변환 풀이/재귀함수 문제 (파이썬)

 

코딩테스트 준비 - 프로그래머스: 괄호 변환 풀이/재귀함수 문제 (파이썬)

프로그래머스: 괄호 변환 *프로그래머스 래벨이 올라갈수록 구현하기 귀찮은 문제들이 많은것 같네요 ㅠㅠ 문제풀러가기 https://programmers.co.kr/learn/courses/30/lessons/60058?language=python3 코딩테스..

eunhee-programming.tistory.com


문제 분석

1. 괄호가 올바른지 확인하는 함수 하나 만들기.

2. 왼쪽으로 한 칸씩 이동시키기 위해, 앞 문자열을 잘라서 뒤에 붙이기.


코드

def correct(s):
    result=""
    for i in s:
        if len(result)==0:
            result+=i
            continue
        if result[-1]=="[" and i=="]":
            result=result[:-1]
        elif result[-1]=="(" and i==")":
            result=result[:-1]
        elif result[-1]=="{" and i=="}":
            result=result[:-1]
        else:
            result+=i
    if len(result)==0: return True
    else: return False
        
def solution(s):
    cnt=0
    rs=0
    while cnt<len(s):
        if cnt!=0:
            a=s[0]
            s=s[1:]+a
        if correct(s):
                rs+=1
        cnt+=1
    return rs

코드 풀이

def correct(s): #올바른 괄호인지 확인하는 함수
    result=""
    for i in s:
        if len(result)==0: #result안에 아무것도 없으면 일단 집어 넣는다
            result+=i
            continue
            
        #괄호 짝이 맞다면, 없어진다 (*result안에 있는 여는 괄호가 없어진다)
        if result[-1]=="[" and i=="]": 
            result=result[:-1]
        elif result[-1]=="(" and i==")":
            result=result[:-1]
        elif result[-1]=="{" and i=="}":
            result=result[:-1]
        else:
            result+=i
    # 문자열 전체가 올바른 괄호면 result안에 아무것도 안남게 된다.
    if len(result)==0: return True
    # 문자열 전체가 올바르지 않으면 result안에 올바르지 않은 괄호들이 남게된다.
    else: return False
        
def solution(s):
    cnt=0 #한 칸씩 이동할때마다 카운트 세주는 변수
    rs=0 #올바른 괄호일때 마다 카운트 해주는 변수
    
    while cnt<len(s):
        if cnt!=0:
            a=s[0]
            s=s[1:]+a
        if correct(s):
                rs+=1
        cnt+=1
    return rs

<잡담>

저번에 비슷한 문제를 풀어봐서 빨리 풀수 있었습니다.

 

프로그래머스 Lv2밖에 안됐는데 왜이렇게 사람이 피폐해지는것 같쥬.... ㅋㅋㅋㅋ

반응형

댓글