LG전자_백준_4949 (균형잡힌 세상_실버4_구현_괄호문제_스택)

RostoryT·2022년 7월 22일
0

Corporation_Coding Test

목록 보기
8/19

2021 LG전자 코테 중 1번문제가 이와 비슷하다고 하여 풀어봄


메모한 것

()와 []
같은 것과만 짝을 이루어야 함, 1:1매칭만 가능

결론 : 균형잡혔는지 아닌지만 판별 yes no
-> [(]) 이거도 no ~> 숫자 +-할 경우 이거 못잡음
-> 아무겂도 없는 ' ' 는 yes

각 줄은 마침표'.'로 끝남
입력 종료조건으로 '.'가 들어옴

알고리즘

[]랑 ()같이 관리하는 스택 만들어서
[,(일경우 append
],)일경우 스택[-1]이 [냐(냐 같지 않으면 바로 return "no" // 같으면 pop()


솔루션 코드

  • 반례 찾다가 애먹었음
  • 다른 사람들 코드도 나랑 비슷함
import sys
def solution(text):
    stack = []
    
    for i in text:
        if i == '(' or i == '[':
            stack.append(i)
        elif i == ')':
            if not stack: return "no"     # 처음이 닫는괄호인 경우
            
            if stack[-1] == '(':
                stack.pop()
            elif stack[-1] == '[':
                return "no"
            
        elif i == ']':
            if not stack: return "no"     # 처음이 닫는괄호인 경우
            
            if stack[-1] == '[':
                stack.pop()
            elif stack[-1] == '(':
                return "no"
            
    if not stack:
        return "yes"
    else:
        return "no"

text = sys.stdin.readline()
#text = input()
while text != '.':    
    print(solution(text))
    text = input()



테케 중 특이한 반례 모음

.
)(.
([)].
[.
[[.
[[[[[[[.


profile
Do My Best

0개의 댓글