💡문제접근
- 각 원자의 질량값을 딕셔너리로 선언하고 괄호 문자 내의 원자의 경우
(
문자가 나오고서부터 )
가 나올 때까지의 값을 계산하는 temp
변수를 만들어 구한 다음 stack에 넣어주는 방식으로 코드를 작성했다. 스택과 문자열을 같이 다루는 부분에서 연습이 좀 더 필요하다고 보여진다.
💡코드(메모리 : 31256KB, 시간 : 44ms)
import sys
input = sys.stdin.readline
chemical_string = input().strip()
stack = []
result = 0
dic = {"H" : 1, "C" : 12, "O" : 16}
for i in range(len(chemical_string)):
if chemical_string[i] == "(":
stack.append("(")
elif chemical_string[i] == ")":
temp = 0
while True:
val = stack.pop()
if val == "(":
break
temp += val
stack.append(temp)
elif chemical_string[i].isdigit():
stack[-1] *= int(chemical_string[i])
else:
stack.append(dic[chemical_string[i]])
print(sum(stack))
💡소요시간 : 26m