4889번: 안정적인 문자열
입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우
www.acmicpc.net
문제풀이:
스택을 이용한 괄호체크 문제와 똑같이 푼다.
"{"가 나올 경우에는 스택에 추가하고, "}"가 나올 경우에는 스택에서 하나를 pop 하는데, 이때 스택이 비어있는 경우 "}"->"{"로 바꾸는 연산을 수행해야 하므로 ans++ 후 스택에 "{"를 추가한다.
주어진 입력을 모두 체크한 후 스택이 비어있지 않은 경우 "{"를 "}"로 바꾸는 연산이 필요한데 한 번 연산하면 스택에서 두개 씩 pop한다.
import sys
num = 0
while (True):
data = sys.stdin.readline().rstrip()
if (data[0]=="-"):
break
num+=1
ans = 0
stack = []
for i in data:
if (i=="{"):
stack.append(i)
else:
if (len(stack)==0):
ans += 1 # "}" -> "{"
stack.append("{")
else:
stack.pop()
while (len(stack)>0):
stack.pop()
ans += 1 # "{" -> "}"
stack.pop()
print("%d. %d" % (num, ans))
'알고리즘💻 > 스택&큐&덱' 카테고리의 다른 글
BOJ 2304번: 창고 다각형 (0) | 2021.07.22 |
---|---|
BOJ 2347번: 풍선 터뜨리기 (0) | 2021.07.12 |
BOJ 17299번: 오등큰수 (0) | 2021.02.01 |
BOJ 2504번: 괄호의 값 (0) | 2021.02.01 |
BOJ 1021번: 회전하는 큐 (0) | 2021.02.01 |
4889번: 안정적인 문자열
입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우
www.acmicpc.net
문제풀이:
스택을 이용한 괄호체크 문제와 똑같이 푼다.
"{"가 나올 경우에는 스택에 추가하고, "}"가 나올 경우에는 스택에서 하나를 pop 하는데, 이때 스택이 비어있는 경우 "}"->"{"로 바꾸는 연산을 수행해야 하므로 ans++ 후 스택에 "{"를 추가한다.
주어진 입력을 모두 체크한 후 스택이 비어있지 않은 경우 "{"를 "}"로 바꾸는 연산이 필요한데 한 번 연산하면 스택에서 두개 씩 pop한다.
import sys
num = 0
while (True):
data = sys.stdin.readline().rstrip()
if (data[0]=="-"):
break
num+=1
ans = 0
stack = []
for i in data:
if (i=="{"):
stack.append(i)
else:
if (len(stack)==0):
ans += 1 # "}" -> "{"
stack.append("{")
else:
stack.pop()
while (len(stack)>0):
stack.pop()
ans += 1 # "{" -> "}"
stack.pop()
print("%d. %d" % (num, ans))
'알고리즘💻 > 스택&큐&덱' 카테고리의 다른 글
BOJ 2304번: 창고 다각형 (0) | 2021.07.22 |
---|---|
BOJ 2347번: 풍선 터뜨리기 (0) | 2021.07.12 |
BOJ 17299번: 오등큰수 (0) | 2021.02.01 |
BOJ 2504번: 괄호의 값 (0) | 2021.02.01 |
BOJ 1021번: 회전하는 큐 (0) | 2021.02.01 |