[알고리즘] 스택(Stack) 백준 4949번 - 균형잡힌 세상

minidoo·2020년 9월 13일
0

알고리즘

목록 보기
8/85
post-thumbnail

참고 코드

import sys

while True:
    string = sys.stdin.readline().rstrip()
    if string == '.':
        break

    stack = []
    flag = 1

    for cha in string:
        if cha == '(' or cha == '[':
            stack.append(cha)
        elif cha == ')':
            if stack and stack[-1] == '(':
                stack.pop()
            else:
                flag = 0
                break
        elif cha == ']':
            if stack and stack[-1] == '[':
                stack.pop()
            else:
                flag = 0
                break
    if not stack and flag == 1:
        print('yes')
    else:
        print('no')

풀이과정

  1. '[', '{'의 경우에는 stack에 넣어준다.
  2. ']'일 경우
    1) 바로 이전 괄호가 '[' (즉, 배열에 무언가 있다)이면 pop 해준다.
    2) 그 외의 경우는 모두 거짓임으로 flag에 0을 넣어준다.
  3. '.'이 나오면 while문을 빠져나온다.

새로 배운 내용

import sys

import sys

string = sys.stdin.readline()
string.rstrip()

sys.stdin.readline()은 줄 단위로 입력받으며 input()보다 빠르다.
rstrip()은 오른쪽 공백을 제거해준다.

  • sys.stdin.readline()
    : 띄어쓰기, \n을 포함한다.
<input>
12 3 45

<output>
1
2

3

4
5
  • sys.stdin.readline().split()
    : 공백 단위로 나눠준다.
<input>
12 3 45

<output>
12
3
45
  • sys.stdin
    : 여러 줄 입력이 가능하다.
<input>
1234
<output>
1234
<input>
hello?
<output>
hello?
...

배열의 not

temp = []

if temp:	// len(temp) > 0
if not temp:	// len(temp) = 0

0개의 댓글