제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가진 stack 구조를 이용하는 문제
문제 예시에서 만들어야 하는 수는 차례로
4, 3, 6, 8, 7, 5, 2, 1
이다.
1부터 8까지 숫자를 이용해서 만드는 것이다.
1,2,3,4 쌓고 (stack=[1,2,3,4])
pop() ->4 (stack=[1,2,3])
pop() ->3 (stack=[1,2])
5,6 쌓고 (stack=[1,2,5,6])
pop() ->6 (stack=[1,2,5])
pop() ->5 (stack=[1,2])
7,8쌓고 (stack=[1,2,7,8])
pop() ->8 (stack=[1,2,7])
pop() ->7 (stack=[1,2])
pop() -> 2 (stack=[1])
pop -> 1 (stack=[])
내가 만들어야 하는 숫자(n)의 순서를 리스트에 담고,
숫자 1(cnt)부터 시작해서 비교한다.
N=int(input())
stack=[]
result=[]
cnt=1
for _ in range(N):
n=int(input())
while cnt <= n :
stack.append(cnt)
cnt+=1
result.append('+')
if n==stack[-1]:
stack.pop()
result.append('-')
if not stack:
print('\n'.join(result))
else:
print('NO')
리스트 요소 한줄씩 출력하는
print('\n'.join(result))
표현법 기억하기!
'Algorithm > baekjoon' 카테고리의 다른 글
백준 2805 파이썬 : 나무자르기 / 1654 파이썬 : 랜선자르기 (이분탐색) (0) | 2022.10.13 |
---|---|
백준 2108 파이썬 : 통계학 - Counter (0) | 2022.10.12 |
JAVA : 백준 2562번 최댓값 (0) | 2022.06.12 |
JAVA : 백준 2475번 검증수 (BufferedReader, Scanner) (0) | 2022.06.12 |
JAVA : 2438번 별찍기-1 (0) | 2022.06.10 |