글모음

682. Baseball Game [Easy, Python] 본문

알고리즘/Leetcode

682. Baseball Game [Easy, Python]

Nova_61 2021. 3. 6. 00:52
728x90
반응형

 

[ 정답 1 ]

  • 카테고리: 스택
  • Runtime: 35.97%
  • Memory Usage: 48.21%
  • 시간 복잡도 : O(n) - for문 하나
  • 공간 복잡도 : O(n) - list 하나

class Solution:
    def calPoints(self, ops):
        record = []
        for i in range(len(ops)):
            try: record.append(int(ops[i]))
            except:
                if ops[i] == "C": record.pop()
                elif ops[i] == "D": record.append(2* record[-1])
                elif ops[i] == "+": record.append(record[-2] + record[-1])
        return sum(record)

1. 값들을 저장할 list 하나 생성

2. ops에 들어있는 list 안의 element들이 전부 str 타입으로 들어있어서 숫자 연산(곱셈, 덧셈) 시에 오류가 나서 try-except문을 썼다.

3. 해당하는 문자에 따른 연산 수행

 

[ 정답 2 ]

class Solution:
    def calPoints(self, ops):
        record = []
        for letter in ops:
            if letter == "C": record.pop()
            elif letter == "D": record.append(2* record[-1])
            elif letter == "+": record.append(record[-2] + record[-1])
            else: record.append(int(letter))
        return sum(record)

i 를 쓰는 대신에 ops 리스트에 있는 요소들을 바로 반복으로 돌리고,

생각해보니 [C, D, +] 이외에 모든 문자들은 숫자라서 Stack에 숫자를 추가하는 부분을 else로 돌려 번거로웠던 try-except문을 제거했다.

 

try-except문을 제거하니 35.97%에서 88.87%로 더 빨라졌다.

 

 

 

Baseball Game - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

728x90
반응형
Comments