Introfor

[백준]1872번 스택 수열 본문

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())

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

'Programming_prob > BaekJoon' 카테고리의 다른 글

[백준] 10845번 큐  (0) 2020.09.12
[백준] 1406번 에디터  (0) 2020.09.11
[백준] 9093번 stack  (0) 2020.09.09
[백준] 10953번 / A+B - 6  (0) 2020.07.03
[백준] 10870번 / 피보나치 수 5  (0) 2020.07.01
Comments