코딩테스트 문제

[백준/Python] 균형 잡힌 세상

왕초보코딩러 2024. 9. 9. 17:31
728x90

 

https://www.acmicpc.net/problem/4949

 

 


저는 stack을 이용하여 구현하였습니다.

2023.12.16 - [코딩테스트 문제] - [프로그래머스/Python] 올바른 괄호

 

[프로그래머스/Python] 올바른 괄호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘

dogfoot1.tistory.com

의 상위 버전입니다.

 

1. 무한 반복문을 사용하고, '.'이 들어오면 break

2. 들어온 문자열 중 ()[] 만 남긴다

3. no가 되는 상황에 대한 함수 작성

 

no 가 되는 상황

1. stack에 ')' 나 ']' 가 먼저 들어온다

2. '(' 이 들어왔는데 ']' 가 먼저 닫힌다 / '[' 이 들어왔는데 ')' 가 먼저 닫힌다

3. 모든 괄호가 닫히지 않았다

 

무한 반복문 처리와 ()[]만 남기는 코드

while True:
    st = input()
    if st == '.':
        break
    
    # ()[]만 남긴다
    data = ''
    for s in st:
        if s in set(['(', ')', '[', ']']):
            data += s

 

no와 yes를 리턴하는 함수

stack에 '(' 와 '[' 만 append 한다.

def sm(data):
    last = []
    for d in data:
        if d == '(':
            last.append('(')
        elif d == ')':
            # stack에 아무것도 없는데 )
            if len(last) == 0:
                return 'no'
            
            # [ 이 들어왔는데 ) 가 나온다
            v = last.pop()
            if v == '[':
                return 'no'
        elif d == '[':
            last.append('[')
        elif d == ']':
            # stack에 아무것도 없는데 ]
            if len(last) == 0:
                return 'no'
            
            # ( 이 들어왔는데 ] 가 나온다
            v = last.pop()
            if v == '(':
                return 'no'
            
    if len(last) == 0:        
        return 'yes'
    else: # stack에 ( 나 [ 가 남아있다
        return 'no'

while True:
    st = input()
    if st == '.':
        break
    
    # ()[]만 남긴다
    data = ''
    for s in st:
        if s in set(['(', ')', '[', ']']):
            data += s
    
    print(sm(data))

 

 

실패 이유

1. stack으로 구현하지 않고 small과 big 변수를 따로 나누어서 사용해서 no가 되는 상황 2번 조건을 만족하지 못했다.

2. 마지막에 모든 괄호가 닫혔는지 length를 확인하는 코드를 안넣었다.

'코딩테스트 문제' 카테고리의 다른 글

[백준/Python] 잃어버린 괄호  (1) 2024.09.11
[백준/Python] 최대공약수와 최소공배수  (0) 2024.09.11
[백준/Python] 소수 구하기  (0) 2024.09.09
[Python] 이진 탐색  (0) 2024.09.08
[백준/Python] 동전 0  (0) 2024.09.07