https://leetcode.com/problems/baseball-game/

 

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

 

 

풀이를 해봅시다.

일단, 이러한 문제이에요.

게임을 하는데, 이상한 룰이 있어요.

C,D,+와 같은 룰이죠.

이 게임에서는 과거가 미래까지 영향력을 많이 주어요!

 

C는 바로 이전 게임의 점수를 초기화 시켜요!!

D는 바로 이전 게임의 점수를 두배를 만들어 주고여. 아 여기서 제곱이 아니에요.

+는 이이전 수와 이전수를 더해요!! 

그리고 그냥 Int는 점수로 쳐줘요!!

이렇게 해서,

 

아래와 같이 Switch 문으로 작성을 해보왔는데요!!

 

아직 타입을 확실히 이해하지 못한 것같아요!!

그래서 확실히 result를 [Int]로 확실히 찍고!!!!!!

append()를 해줍니다.

 

그런데... 여기서 큰 실수가 있죠?

뭐냐면, forEach 문의 장점은 간략하고 신속하게 문제를 해결할 수 있는 것이죠!!

 

근데, 아쉽게도 세세한 상황을 다루지는 못해요.

 

이런것이 설계 미스인것같아요!!

 

앞으로는 조금 다뤄야할 것이 많다면, 

i 인덱스를 사용하는 것이 더 빠를 수도 있다는 것을 느껴요!

 

다른 고수님들의 풀이를 봐볼까요?

class Solution {
    func calPoints(_ ops: [String]) -> Int {
        
        var result:[Int] = []
        
        ops.forEach{ op in 
             switch op{
                 case "C": result.removeLast()
                 case "D": result.append(result.first! * 2)
                 case "+": result.append(result.first! + result.last!)
                 default: 
                 result.append(Int(op)!)
             }       
             print(result)
        }   
        
        return result.reduce(0,+)
    }
}

 

 

Prabhat_Tripathi 님의 풀이를 가져와 봤는데요,
이 분은 for문과 if문의 조합을 사용하셨네요!!
나쁘지 않아요!! 

이 부분을 잘하신것 같아요!!

인덱스 관리하는 부분을 잘하셨어요!!

[scoreArray.count - 2] + [scoreArray.count - 1]

 

그리고 마지막에 삼항 연산자로 연결해서 비워있을 수도 있으니깐?

isEmpty를 체크해서 비워있다면 0!! 

 

이부분도 잘하신 것같아요.

 

다른 분들도 대부분 비슷하게 해서 이번에는 한개만 후기해요!

class solution {
		var scoreArray = [Int]()
		for i in 0..<ops.count {
			if ops[i] == "C" {
				scoreArray.removeLast()
			} else if ops[i] == "D" {
				scoreArray.append(scoreArray.last! * 2)
			} else if ops[i] == "+" {
				scoreArray.append(scoreArray[scoreArray.count - 2] + scoreArray[scoreArray.count - 1])
			} else {
				scoreArray.append(Int(ops[i])!)
			}
		}
		return scoreArray.isEmpty ? 0 : scoreArray.reduce(0, +)
}

 

 

'Algorithm > Leetcode' 카테고리의 다른 글

Leetcode_Transpose Matrix  (0) 2022.06.30
Leecode_Flipping an Image  (0) 2022.06.30
Leetcode_Robot-return-to-origin  (0) 2022.06.30
Leetcode_fizz-buzz  (0) 2022.06.30
Leetcode_Add digits  (0) 2022.06.30

+ Recent posts