BAEKJOON : 9012, 1874
No. 9012
1. Problem
2. My Solution
- 괄호의 개수가 홀수개이면 VPS가 아님
- 괄호의 개수가 짝수개일 때 '()'를 replace 함수를 이용하여 제거했을 때 모두 없어지면 VPS
import sys
test_n = int(sys.stdin.readline().strip())
for _ in range(test_n):
ps = sys.stdin.readline().strip()
for _ in range(len(ps)//2):
ps = ps.replace("()","")
if len(ps) == 0:
print('YES')
else:
print('NO')
3. Others' Solutions
- 스택 자료구조를 이용하여 문제 해결
def solve():
data = input()
stack = []
for item in data:
if item == '(':
stack.append(item)
else:
if len(stack) == 0:
print("NO")
return
else:
stack.pop()
if len(stack) == 0:
print("YES")
else:
print("NO")
4. Learned
- 스택의 원리와 괄호의 원리에 대해서 좀 더 생각하게 되었다
- replace 함수는 결과를 반환할 뿐 원본 문자열 데이터는 바뀌지 않는다
No. 1874
1. Problem
2. My Solution
- 원소가 없을 경우에 [-1] 인덱스 접근은 IndexError 를 발생시키므로 try-catch 문 이용
import sys
n = int(sys.stdin.readline().strip())
sequence = []
stack = []
push_pop = []
for _ in range(n):
sequence.append(int(sys.stdin.readline().strip()))
i = 0
j = 0
flag = True
while(i != n or len(stack)!=0):
try:
if stack[-1] > sequence[j]:
flag = False
break
elif stack[-1] == sequence[j]:
stack.pop()
push_pop.append("-")
j += 1
else:
i += 1
stack.append(i)
push_pop.append("+")
except:
i += 1
stack.append(i)
push_pop.append("+")
if flag == True:
for i in push_pop:
print(i)
else:
print("NO")
3. Learned
- try-catch 문을 이용해서 어려운 구현 부분을 대신할 수 있다
Author And Source
이 문제에 관하여(BAEKJOON : 9012, 1874), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@codren/BAEKJOON-y1bq1x7z저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)