스택수열
stack =[]
answer =[]
n = int(input()) # 8 (입력 개수)
arr = [int(input()) for _ in range(n)] # [4, 3, 6, 8, 7, 5, 2, 1] (입력 배열)
index = 0
for i in range(1,n+1): # 1 2 3 4 5 6 7 8
stack.append(i) # 스택이 비어있으면 안되서
answer.append('+')
while stack and stack[-1] == arr[index]: # 스택이 안비어있고 스택의 마지막이 배열의 인덱스와 같으면
stack.pop()
answer.append('-')
index+=1 #인덱스 올려주기
if stack:
print("No")
else:
for i in answer:
print(i)
아이디어
index 변수를 주어 arr[index]와 stack[-1]을 비교해준다.
과정
- stack이 비어있으면 안되므로 i순서대로 append 즉 push이므로 answer에 +를 추가해준다.
- stack이 안비어있고, 스택의 가장 위와 원하는 숫자 (arr[index])가 같은 경우 pop 을 해준다.
- pop을 해주었기 때문에 인덱스 +=1 을 해주어 다음 숫자를 검사할수 있게 해준다.
- 반복 해준다.
- for문이 끝나고 stack이 남아있으면 No출력
- 아닌 경우 answer출력
'항해99 chap02' 카테고리의 다른 글
프린터 큐 - 큐 (0) | 2022.01.21 |
---|---|
카드2 - 큐 (0) | 2022.01.21 |
괄호 - 스택 (0) | 2022.01.21 |
중복 문자 제거 - 스택 (0) | 2022.01.21 |
일일온도 - 스택 (0) | 2022.01.21 |