(Python) BOJ - 1874. スタック数列
BOJ - 1874. スタック数列 列の数を1つずつチェック... 数列の数がスタックtopより大きい場合、スタックtopと数列の数が等しいまでスタックに数を押します.
-スタックtopが数列で指定された数と同じ場合、その数がポップアップされます.
-elifスタックtopが数列で指定する数と異なる場合、その数列 は作成できません.
import sys
from typing import List
# Accepted, Runtime: 232ms
def solve(n: int, nums: List[int]) -> List[str]:
ret = [] # 연산 리스트
stack = [] # 스택
cur = 1 # push 하는 수
for num in nums:
# 스택 top 이 num 과 같아질 때 까지 스택에 push
while cur <= num:
stack.append(cur)
ret.append('+')
cur += 1
# 스택 top이 num 과 같다면 pop
if stack[-1] == num:
stack.pop()
ret.append('-')
# 스택 top이 num 과 다르면 불가능
else:
return []
return ret
n = int(sys.stdin.readline())
nums = [int(sys.stdin.readline()) for _ in range(n)]
ans = solve(n, nums)
print('NO' if not ans else '\n'.join(ans))
スタックリストを別途作成...-スタックtopが数列で指定された数と同じ場合、その数がポップアップされます.
-elifスタックtopが数列で指定する数と異なる場合、その数列
Reference
この問題について((Python) BOJ - 1874. スタック数列), 我々は、より多くの情報をここで見つけました https://velog.io/@dora_lee/Python-BOJ-1874.-스택-수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol