무제
[백준] 자료구조 - 9012(괄호) / 1874(스택 수열) 본문
1. 괄호 : 9012번
import sys
input = sys.stdin.readline
n = int(input())
for i in range(n):
stack = []
ps = input().strip()
# 기존 코드
# for x in ps:
# if len(stack) :
# if stack[-1] == "(" and x == ")" :
# stack.pop()
# else :
# stack.append(x)
# else :
# stack.append(x)
# if len(stack):
# print("NO")
# else :
# print("YES")
# 다른 방법
for x in ps :
if x == "(" :
stack.append(x)
elif x == ")":
if stack :
stack.pop()
else :
print("NO")
break
else :
if stack :
print("NO")
else :
print("YES")
다른 방법이 훨씬 나아보인다...
2. 스택 수열 : 1874번
어려웠다
코드상의 cnt부터 시작해서 수를 stack에 넣고 num해 해당되면 pop한다.
cnt가 num을 넘어버리거나 마지막 stack에 num이 없으면 더 진행할 수 없다
예를 들어
[3,4]가 남은 상황에서 3을 얻기 위해 4까지 지워야하는데, cnt가 5까지 모두 진행했다면 4를 얻을 수 없다.
import sys
input = sys.stdin.readline
n = int(input())
stack = []
answer = []
possible = True
cnt = 1
for _ in range(n):
num = int(input())
while cnt <= num :
stack.append(cnt)
cnt += 1
answer.append("+")
if stack[-1] == num:
stack.pop()
answer.append("-")
else :
possible = False
print("NO")
break
if possible :
for a in answer:
print(a)'Study > Coding Test 오답노트' 카테고리의 다른 글
| [백준] 1158번 요세푸스 문제 (0) | 2024.11.10 |
|---|---|
| [백준] 1406번 에디터 (0) | 2024.11.09 |
| 백준 알고리즘 공부 순서 (0) | 2024.10.19 |
| [백준] 그리디 알고리즘 : 5585번 거스름돈 (0) | 2024.10.01 |
| [백준] 덱 10866 / 그리디 1439 (0) | 2024.09.21 |
Comments