잡다로그

[99클럽 코테 스터디] 26일차 TIL - 스택/큐, Baseball Game 본문

Algorithm

[99클럽 코테 스터디] 26일차 TIL - 스택/큐, Baseball Game

날으는다람쥐 2024. 6. 25. 15:55

[26일차] 스택/큐

문제: https://leetcode.com/problems/baseball-game/description/

* 번역: 이상한 규칙을 가진 야구에서 점수를 유지하려고 한다. 경기는 빈 기록으로 시작된다. 문자열 배열 operations가 주어진다. operations[i]는 기록에 반드시 적용해야 하는 i번째 연산이다. 연산은 다음 중 하나이다. 

  • 정수 x : 새로운 점수 x를 기록한다.
  • + : 이전 두 번의 점수를 더해서 새로운 점수로 기록한다.
  • D : 이전 점수의 두 배를 새로운 점수로 기록한다.
  • C : 이전 점수를 무효화시키고, 기록에서 지운다.

모든 연산들을 적용한 후의 점수의 합을 반환하라.

Solution

문제 그대로 연산자들을 차례대로 구현해주면 되는 문제이다. 가장 최근의 원소를 제거할 때는 pop 연산을 활용한다.

뒷 원소에 접근하고 싶다면, 음수 인덱스를 활용한다.

class Solution:
    def calPoints(self, operations: List[str]) -> int:
        score = []

        for i in operations:
            if i == '+':
                p1 = score[-1]
                p2 = score[-2]
                score.append(p1+p2)
            elif i == 'D':
                p1 = score[-1]
                score.append(p1 * 2)
            elif i == 'C':
                score.pop()
            else:
                score.append(int(i))
            
        ans = 0
        for i in score:
            ans += i

        return ans

나다어

나는 다음에 어떻게 풀까

파이썬에서 pop remove del 연산의 차이는 다음과 같다.

  • remove : 삭제하려는 항목이 리스트에 없는 경우 ValueError 반환
  • pop : 맨 뒤의 원소 혹은 인덱스로 원하는 요소 제거 후 반환
  • del: 인덱스로 원하는 요소 제거, 요소 반환 X. 인덱스 슬라이싱 활용 가능.

https://hgk5722.tistory.com/286

 

[Python] 파이썬 remove(), pop(), del 차이점

파이썬은 리스트에서 요소를 삭제하는 3가지 방법을 지원합니다. remove, pop, del이 그것입니다. 비슷하지만 조금씩 다른 3가지 함수에 대해 알아보겠습니다.  1. remove()  remove()는 파이썬 리스트

hgk5722.tistory.com

 

Comments