첫번째 코드
일단...문제 이해에서 고생을 했다...
해당 숫자까지 삽입하고 삭제하는 과정이 가능한지, 과정을 +와 -로 표현하는건데
숫자와 수열이랑 관계가 있나로 쓸데없는 고민을 했다...
이럴떄는 밥먹고 리프레쉬해서 산뜻한 마음으로 다시 읽어봐야지..하고 이해해버렸다 ㅎㅎ
근데 문제느 스택을 처음 접해서 고민을 많이 했다...
스택으로 더하고 빼는 것 까지는 이해를 했는데....라고 까지 생각했는데
그냥 단순하게 리스트에서 더하고 뺴는 것이라고 생각하면 된다!
단, 맨 끝에 더해지고 맨 끝에 제외된다 라는 생각을 가지면 된다!
책을 참고해서 코딩을 했는데, 다음에 풀 때는 조건문 조금씩 생각하면 금방 풀 수 있을 것 같다!
import sys
input = sys.stdin.readline
n = int(input())
seq = []
for i in range(n):
seq.append(int(input()))
start = 1
stack = []
result = True
answer = ''
for i in range(n):
if seq[i] >= start:
while seq[i] >= start:
stack.append(start)
start += 1
answer += '+\n'
stack.pop()
answer += '-\n'
else:
num = stack.pop()
if num > seq[i]:
print('NO')
result = False
break
else:
answer += '-\n'
if result:
print(answer)
통과!
다음에도 밥먹고 산뜻하게 문제 이해해서 조건문만 다시 생각하도 풀어보도록 하자!
링크
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
014 절댓값 힙 (0) | 2024.04.22 |
---|---|
013 카드2 (0) | 2024.04.22 |
012 오큰수 (0) | 2024.04.18 |
010 최솟값 찾기 (0) | 2024.04.15 |
009 DNA 비밀번호 (2) | 2024.04.15 |