개발계발/알고리즘
[10799] 쇠막대기 #python
냥냥친구
2020. 9. 21. 23:30
내가 푼 답
req = list(input())
laser = []
laser_num = 0
stick = []
result = 0
for r in req:
if r == "(":
laser.append(r)
stick.append(r)
elif r == ")":
if laser:
laser = []
stick.pop()
laser_num += 1
else:
stick.pop()
result += (laser_num + 1)
if not stick:
laser_num = 0
print(result)
정답
req = list(input())
stack = []
result = 0
for i in range(len(req)):
if req[i] == "(":
stack.append(req[i])
else:
stack.pop()
if req[i-1] == "(":
result += len(stack)
else:
result += 1
print(result)
엄청 간단하게 푸는 문제였는데 거의 1시간 반동안 헤맴.... ㅠ...
리뷰하면, 레이저를 만나면 앞에 막대기 개수를 더해주고 레이저가 아닌 막대기의 끝이라면 마지막 막대기를 세주면 되는 식이다. 레이저로 인해 앞에 잘린 막대기 + 뒤에 남은 막대기
규칙성을 찾고 문제를 단순히 생각하는 게 중요한듯!