4/18学習問題


最初の問題
https://www.acmicpc.net/problem/4949
->バランスのとれた世界

1-1番問題解決コード(エラー)

import sys

while True:
    sentence = sys.stdin.readline().rstrip()
    bracket = []
    true_flag = 1

    for i in sentence:
        if i == '(' or i == '[':
            bracket.append(i)
        elif i == ']':
            if len(bracket) != 0 and bracket[-1] == '[':
                bracket.pop()
            else:
                true_flag = 0
                break
        elif i == ')':
            if len(bracket) != 0 and bracket[-1] == '(':
                bracket.pop()
            else:
                true_flag = 0
                break

    if sentence == '.':
        break

    if true_flag == 1:
        print('yes')
    else:
        print('no')
=======================================================

1-2問題解決コード(正しい)

import sys

while True:
    # 문장들을 원하는 만큼 입력 받기
    sentence = sys.stdin.readline().rstrip()
    # 괄호를 체크할 리스트
    bracket = []
    # 맞으면 1, 틀리면 0
    true_flag = 1

    for i in sentence:
        # 만약 문장에서 '(' 이나 '['이 있으면 bracket리스트에 추가
        if i == '(' or i == '[':
            bracket.append(i)
        # 만약 ']' 가 보이면,
        elif i == ']':
            # bracket 리스트가 비어있지 않고, 여는 괄호가 ']'와 짝이 맞다면,
            if len(bracket) != 0 and bracket[-1] == '[':
                bracket.pop() # 맞는 것은 1, 그리고 결국엔 bracket안에 아무것도 남지 않음
            else:
                true_flag = 0 # 틀렸으면 0 그리고 멈춤
                break
        # 만약 ')' 가 보이면,
        elif i == ')':
            # bracket 리스트가 비어있지 않고, 여는 괄호가 ')'와 짝이 맞다면,
            if len(bracket) != 0 and bracket[-1] == '(':
                bracket.pop() # 맞는 것은 1, 그리고 결국엔 bracket안에 아무것도 남지 않음
            else:
                true_flag = 0 # 틀렸으면 0 그리고 멈춤
                break
    # 만약 '.'이면 종료한다.
    if sentence == '.':
        break

    # 만약 bracket 안에 아무것도 없고, true_flag가 1이면 yes 아니면 no 출력
    if true_flag == 1 and len(bracket) == 0:
        print('yes')
    else:
        print('no')
=======================================================
本当に別の場所で探すのではなく、条件がどのように与えられたのかよく考えてみましょう.
今日はここまでです.