Python 백준 1874 스택수열 알고리즘
n = int(input()) # 처음 입력하는 n값
# 이 수에 따라 총 몇개의 원소를 가진 수열인지 정해짐
s = [] # 수열을 판단할 임시 리스트
op = [] # 나중에 출력할 +, - 리스트
count = 1
temp = True
for i in range(n):
num = int(input())
# 처음 입력된 n값 만큼 입력을 계속 받고,
while count <= num:
# 입력된 num값이 count보다 커질 때 while문을 탈출
# 처음 입력값이 4라면 count는 처음 전역변수로1이었으니
# while문은 계속 돌아감
s.append(count)
# s에 count값을 붙여준다.
op.append('+')
count += 1
# 이 부분은 나중에 출력할 값인 + 를넣어준다
# 1234에서 4로 이동하기 위해 1씩 더해줬으니
# +를 추가해준 것,
# 4라고 가정함녀 그 후 1,2,3,4까지 왔으니 4번을 더 한다.
# 4까지 왔으면 while문을 탈출하고
# 현재 s에는 1,2,3,4가 와있고, count는 4가되있을 것,
if s[-1] == num:
#만약 s의 마지막 부분이
# 입력된 num값과 같다면
s.pop() # s의 마지막을 제거해주고
op.append("-")
# 이부분은 pop으로 뺐으니 op 리스트에 -를 해준다.
else:
temp = False
if temp == False:
print('NO')
# 만약 for문을 다 거쳤는데, 위의 조건과 일치하지 않으면 False니 만들 수 없는 조건이라 NO를 프린트한다.
else:
for i in op:
print(i)
# op 리스트에 쌓인 +, -를 출력한다.
'Back > Algorithm' 카테고리의 다른 글
백준 알고리즘 1316 그룹단어 체크 파이썬 (0) | 2021.03.12 |
---|---|
백준 알고리즘 2606 바이러스 / 파이썬 (Python) (0) | 2021.03.11 |
Python 백준 4949 균형잡힌세상 / 스택 알고리즘 (0) | 2021.03.10 |
Python 병합정렬 알고리즘 (0) | 2021.03.10 |
Python 백준 2805 나무자르기 / 이진탐색 알고리즘 (0) | 2021.03.09 |