Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

2540. Minimum Common Value (최소 공통 값) 본문

코딩 테스트/LeetCode

2540. Minimum Common Value (최소 공통 값)

포카리tea 2024. 10. 7. 18:10

볼링 게임에서 플레이어 1과 플레이어 2가 각각 친 핀 수를 나타내는 0 인덱스 정수 배열 플레이어 1과 플레이어 2 두 개가 주어집니다.

볼링 게임은 n번의 턴으로 구성되며, 각 턴의 핀 수는 정확히 10개입니다.

플레이어가 i번째 턴에서 xi 핀을 친다고 가정합니다. 플레이어의 i번째 턴의 값은 다음과 같습니다:

플레이어가 (i - 1)번째 또는 (i - 2)번째 턴에서 10핀을 치는 경우 2xi.
그렇지 않으면 xi입니다.
플레이어의 점수는 n번의 턴 값의 합입니다.

Return

  • 플레이어 1의 점수가 플레이어 2의 점수보다 크면 1,
  • 플레이어 2의 점수가 플레이어 1의 점수보다 큰 경우 2
  • 무승부일 경우 0.

 

예시 1:

입력: player1 = [5,10,3,2], player2 = [6,5,7,3]
출력: 1
설명:
플레이어 1의 점수는 5 + 10 + 2*3 + 2*2 = 25입니다.
플레이어 2의 점수는 6 + 5 + 7 + 3 = 21입니다.

 

예시 2:

입력: player1 = [3,5,7,6], player2 = [8,10,10,2]
출력: 2
설명:
플레이어 1의 점수는 3 + 5 + 7 + 6 = 21입니다.
플레이어 2의 점수는 8 + 10 + 2*10 + 2*2 = 42입니다.

 

예시 3:

입력: player1 = [2,3], player2 = [4,1]
출력: 0
설명:
플레이어 1의 점수는 2 + 3 = 5입니다.
플레이어 2의 점수는 4 + 1 = 5입니다.

 

예시 4:

입력: player1 = [1,1,1,10,10,10,10], player2 = [10,10,10,10,1,1,1]
출력: 2
설명:
플레이어 1의 점수는 1 + 1 + 1 + 10 + 2*10 + 2*10 + 2*10 = 73입니다.
플레이어 2의 점수는 10 + 2*10 + 2*10 + 2*10 + 2*1 + 2*1 + 1 = 75입니다.

 

 

조건:

  • n == player1.length == player2.length
  • 1 <= n <= 1000
  • 0 <= player1[i], player2[i] <= 10

정답:

public class Solution {
    public int IsWinner(int[] player1, int[] player2) {
        int score1 = ScoreCalc(player1);
        int score2 = ScoreCalc(player2);

        return score1 == score2 ? 0 : score1 > score2 ? 1 : 2;
    }

    public int ScoreCalc(int[] player)
    {
        int score = 0;
        int tenCount = 0;
        
        for (int i = 0; i < player.Length; i++)
        {
            if (tenCount > 0)
            {
                score += player[i] * 2;
            }
            else
            {
                score += player[i];
            }

            if (player[i] == 10)
            {
                tenCount = 2;
            }
            else
            {
                tenCount -= 1;
            }
        }

        return score;
    }
}

해설: ScoreCalc 에서 점수를 계산합니다.

10점일 경우 앞으로 2번째 동안 두 배로 계산되기 때문에 tenCount에 2를 넣어주고 1이상일 경우에 두배로 계산하고 나머진 그냥 더해줍니다.

점수를 모두 더한 후 score1과 score2의 점수를 비교하여 return해줍니다.