[백준] 스택 수열
문제를 이해하는 것 자체도 오래걸렸다. 그렇지만 바로 풀이를 듣는 것보다 익숙해지기 위해서 문제를 자세히 읽으니 비로소 이해했다. 자~세히 읽어야한다.
숫자 n 과 1부터 n까지로 구성된 수열이 주어진다.(낱개의 원소로 주어져서 헷갈렸다..) 스택에 넣었다가 pop하는 방식으로 수열을 만들 수 있다. 스택에 1부터 n까지 넣을 때는 반드시 오름차순으로(1부터 n까지 차례대로) 넣어야한다.
n이 8이고 수열이 4,3,6,8,7,5,2,1 이라면 배열의 처음 숫자는 4이므로 스택에 1,2,3,4 까지 넣고 4를 pop하는 식으로 진행한다.
내 풀이(미완성)
arr = []
b = []
arr.append(input()) #반복을 해야하는데..
j = 1
for i in range(len(arr)):
print('+')
b.push(j)
if j < arr[i]:
j++
elif j = arr[i]:
print('-')
b.pop()
else:
print('NO')
return
나동빈 강사님 풀이
n = int(input())
count = 1
stack = []
result = []
for i in range(1, n+1): #데이터 개수만큼 반복
data = int(input())
while count <= data: #입력 받은 데이터에 도달할 때까지 삽입
stack.append(count)
count += 1
result.append('+')
if stack[-1] == data: #스택의 최상위 원소가 데이터와 같을 때 출력
stack.pop()
result.append('-')
else: #불가능한 경우
print('NO')
exit(0)
print('\n'.join(result)) #가능한 경우
댓글남기기