작성일 :

문제 링크

5607번 - 問題 1

설명

특정 규칙의 게임을 두 플레이어가 진행할 때, 각 플레이어의 최종 점수를 계산하는 문제입니다.

게임의 규칙은 다음과 같습니다.

  • 두 플레이어가 n 장의 카드를 가지고 게임을 시작합니다.
  • 카드에는 0 부터 9 까지의 숫자 중 하나가 적혀있습니다.
  • 각 라운드마다 플레이어들은 각각 하나의 카드를 공개하고, 숫자가 더 큰 쪽이 두 장의 카드를 모두 가져갑니다.
  • 이 때, 두 장의 카드에 적혀있는 숫자의 합이 해당 라운드의 승자의 점수가 됩니다.
  • 만약, 두 플레이어가 공개한 카드의 숫자가 같다면, 각 플레이어는 자신의 카드를 가져가게 되며, 그 만큼의 점수를 얻습니다.

카드의 개수 n 을 입력받은 후, 각 플레이어가 제출한 카드에 적힌 숫자를 입력받은 후,

위 규칙에 따라서 매 라운드의 승자와 승점을 계산하여 최종 점수를 출력합니다.


Code

[ C# ]

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
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = int.Parse(Console.ReadLine()!);

      var cards = new List<(int, int)>();
      for (int i = 0; i < n; i++) {
        var card = Console.ReadLine()!.Split(' ').Select(int.Parse).ToArray();
        cards.Add((card[0], card[1]));
      }

      int scoreA = 0, scoreB = 0;
      foreach (var card in cards) {
        if (card.Item1 > card.Item2)
          scoreA += card.Item1 + card.Item2;
        else if (card.Item1 < card.Item2)
          scoreB += card.Item1 + card.Item2;
        else {
          scoreA += card.Item1;
          scoreB += card.Item2;
        }
      }

      Console.WriteLine($"{scoreA} {scoreB}");

    }
  }
}



[ C++ ]

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
31
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  vector<pii> cards(n);
  for (int i = 0; i < n; i++)
    cin >> cards[i].first >> cards[i].second;

  int scoreA = 0, scoreB = 0;
  for (int i = 0; i < n; i++) {
    if (cards[i].first > cards[i].second)
      scoreA += cards[i].first + cards[i].second;
    else if (cards[i].first < cards[i].second)
      scoreB += cards[i].first + cards[i].second;
    else {
      scoreA += cards[i].first;
      scoreB += cards[i].second;
    }
  }

  cout << scoreA << " " << scoreB << " \n";

  return 0;
}