오늘의 주제도 스택/큐
오늘도 중간에 깨닫고 다시 스택으로 풀어보았다 ㅎㅎ
문제
입력과 출력
코드
class Solution:
def calPoints(self, operations: List[str]) -> int:
stack=[]
temp=[]
for i in operations:
if i=='C':
stack.pop()
elif i=='D':
temp=int(stack[-1]*2)
stack.append(temp)
elif i=='+':
temp=int(stack[-1])+int(stack[-2])
stack.append(temp)
else:
stack.append(int(i))
return sum(stack)
stack이라는 빈 배열과 요소를 더하고 곱할 때 쓸 temp를 선언해준다.
그리고 조건을 달아서 C일 때는 pop으로 요소를 제거해주고,
D일 때는 마지막 요소에 2를 곱해준다.
+일 때는 마지막 요소와 그 전 요소를 더해주고, 숫자라면 그대로 넣어준다.
그리고 전체 요소를 더해서 반환해준다.
이렇게 조건별로 수행해야할 구문을 작성하여 코드를 구성했었는데, 이런 오류가 났었다.
이때는 그 오류인지 몰랐지만 전체 코드를 완성하고 다시 보는 지금은 처음 주어진 배열에서 숫자를 정수타입인 줄 알았는데, 정수가 아니라 문자로 주어져서 정수타입으로 바꿔 계산해줘야 한다..!
자꾸 이렇게 인덱스 오류도 나는 것,,이 문제였다
이것도 이때는 몰랐지만 ,, ㅎㅎ 내가 조건을 또 잘못 읽었다..!!
진짜 난독증인걸까,,
저렇게 둘이 곱해주면 안되고 마지막 요소에 2를 곱해주는게 문제 조건임..!! 하하ㅏ
앗 그리고 스택으로 풀어봐야한다는 것을 깨닫고
스택이니까.. pop으로 요소를 제거해주게 코드를 변경한 뒤, 전체적으로 보기 좋게 다듬었다!
전체적으로 틀린 부분을 수정하고 난 뒤의 오류,,
딱 보면 알겠지만 위에서 말했던 !! int로 변경해주지 않아 생긴 문제였다
이 부분까지 해결하고 드디어 성공!!!!
오늘은 22분 ..!
스택/큐는 많이 풀어보지 않아서 아직 좀 헷갈린다!
종강하고 일주일정도 신나게 노느라 최근에 많이 못풀었더니,,
다시 열시미 달려보쟈잇..~!