[99클럽 코테스터디 2기][Python/비기너] 37번째 문제: Baseball Game

최민지·2024년 6월 25일
0
post-thumbnail

오늘의 주제도 스택/큐
오늘도 중간에 깨닫고 다시 스택으로 풀어보았다 ㅎㅎ

[Baseball Game]

문제

입력과 출력

코드

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분 ..!
스택/큐는 많이 풀어보지 않아서 아직 좀 헷갈린다!
종강하고 일주일정도 신나게 노느라 최근에 많이 못풀었더니,,
다시 열시미 달려보쟈잇..~!

profile
공부..일기....

0개의 댓글