백준-10799
쇠막대기
04.18에 푼 문제입니다🌷
- 막대기를 구현해서 하나씩 자르는 수를 고려함.
import sys
input=sys.stdin.readline
line=list(input())
cut=False
result=0
#각 쇠 막대기마다 몇 번 잘리는 지 쇠막대기의 잘리는 횟수를 stack에 저장
stack=[]
for i in line:
if i == '(':
cut=True
#새로운 쇠 막대기 시작
stack.append(0)
elif i == ')':
#() 자르는 괄호가 끝났을 때
if cut==True:
stack.pop()
for j in range(len(stack)):
stack[j]+=1
# 쇠 막대기가 끝났을 때
elif cut==False:
result+=stack.pop()+1
cut=False
print(result)
결과는 잘 나오는데 시간초과가 발생한다. 두번째 for 문 때문인거 같다.
- 레이저가 쐈을 때 막대가 추가되는 것으로 구현
import sys
input=sys.stdin.readline
line=list(input())
cut=False
result=0
#각 쇠 막대기마다 몇 번 잘리는 지 쇠막대기의 잘리는 횟수를 stack에 저장
stack=[]
for i in line:
if i == '(':
cut=True
stack.append(i)
#새로운 막대가 추가될때 result에 막대 하나 추가
result+=1
elif i == ')':
stack.pop()
#쇠 막대기가 아니라 레이져일 때
if cut==True:
#레이져이므로 result에서 막대 개수를 빼준다
result-=1
#레이져로 자를때 막대기가 있는 만큼 생기므로 result에 더해준다
result+=len(stack)
cut=False
print(result)
통과~~~✌️🐰🐰🐰
Author And Source
이 문제에 관하여(백준-10799), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mlsh1112/백준-10799저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)