🍋 문제링크
https://www.acmicpc.net/problem/1874
🍉 Code
메모리 : 143944 KB
시간 : 32 ms
N = int(input())
arr=[]
result=[]
temp=[]
for _ in range(N):
arr.append(int(input()))
j = 0
for i in range(1, N+1):
temp.append(i)
result.append('+')
while (temp and temp[-1] == arr[j]):
temp.pop()
j += 1
result.append('-')
if not temp: # 비어 있으면
for i in result:
print(i)
else:
print("NO")
🥝 메모
문제 이해도 한참 걸림
→ N이 push되면 1, 2, 3, 4, 5, 6, ,,,,, N 이 순서대로 들어올 때 주어진 수열 (ex. 43687521) 이 순서대로 pop 되도록 만드는 것!
문제 접근 순서 ( j = 0 )
- 반복문을 사용하여 1 ~ N 까지 temp 배열에 push 를 하다가
- temp의 가장 마지막 숫자와 arr[j] 의 수와 같으면 pop → j++ 을 하면서 같지 않을때까지 반복
- result 배열 → push 할 때 '+', pop할 때 '-' 넣기
- 최종적으로 반복문이 끝났을 때 temp 배열이→ 비어있으면 result 배열의 원소를 줄바꿈을 사이에 두고 출력
- → 비어있지 않으면 수열을 만족시키지 못했다는 의미이므로 NO 출력
반응형
'➰ 취업준비 > 알고리즘 문제풀이' 카테고리의 다른 글
[C++][백준][1406] 에디터 (스택) (0) | 2021.04.08 |
---|---|
[Python][백준][11057] 오르막 수 (DP) (0) | 2021.04.07 |
[Python][백준][2294] 동전 2 (DP) (0) | 2021.03.29 |
[Python][백준][11055] 가장 큰 증가 부분 수열 (DP) (0) | 2021.03.29 |
[Python][백준][11048] 이동하기 (DP) (0) | 2021.03.29 |