Programming_prob/BaekJoon

[백준]1872번 스택 수열

YongArtist 2020. 9. 11. 18:36
from sys import stdin


if __name__ == '__main__':
    n = int(input())
    seq = map(lambda x: int(x.rstrip()), stdin.readlines())

    cnt, stack, result = 1, [], []
    for i in seq:
        while cnt <= i:
            stack.append(cnt)
            result.append('+\n')
            cnt += 1
        if stack.pop() != i:
            print('NO\n')
            break
        else:
            result.append('-\n')
    print(''.join(result))

출력 초과 오류가 발생하는 문제가 있다. 계속 이것만 잡고 있을 수 없어서 다른 문제 푸는데,, 이것도 해결할 방법을 차자야겠다.

혹시 이 글을 보시는 분께서 아신다면 댓글 남겨주시면 감사하겠습니다.

from sys import stdin

n = int(stdin.readline())
n_list = map(lambda x: int(x.rstrip()), stdin.readlines())


def func():
    cnt, stack, result = 1, [], []

    for i in n_list:
        while cnt <= i:
            stack.append(cnt)
            result.append('+')
            cnt += 1
        if stack.pop() != i:
            return 'NO'
        else:
            result.append('-')

    return '\n'.join(result)


print(func())

다른 예 소스코드는 잘 수행됨을 확인할 수 있습니다.