추천 문제 풀이 시간 : 30분
틀린 코드
n = int(input())
stack = list()
ans = list()
num = 1
for i in range(1,n+1):
p = int(input())
for j in range(num, n+1):
if not stack or stack[-1] != p: # 비어있거나 다를때
stack.append(j)
num += 1
ans.append("+")
else: # 같을 때
stack.pop()
ans.append("-")
break
print(ans)
틀린 이유
for문과 while 문을 구별해서 잘 쓸 줄 알아야 한다.
카운트 하는 변수가 여러개가 있고, 개별로 늘려갈 때 꼭
for j in range(..) 로 쓰는 방법만 있는 것이 아니라
while 문을 통해 변수 하나를 지정해서
while num <= p
num += 1
을 통해 하나씩 늘려갈 수 있다.
정답 코드
n = int(input())
stack = list()
ans = list()
num = 1
for i in range(1, n+1):
p = int(input())
while num <= p: # 다를 때
stack.append(num)
num += 1
ans.append('+')
if stack[-1] == p: # 같을 때
stack.pop()
ans.append('-')
else: # 불가능한 경우
print("NO")
exit(0)
print("\n".join(result))
스택, 그리디
'⏰ 코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 5397 - 키로거 (0) | 2021.08.19 |
---|---|
백준 알고리즘 - 1966 - 프린터 큐 (0) | 2021.08.18 |
백준 알고리즘 - 2798 - 블랙잭 (0) | 2021.08.16 |
백준 알고리즘 - 2920 - 음계 (0) | 2021.08.16 |
백준 알고리즘 - 1000 - A+B (0) | 2021.06.28 |