[백준 5607] 問題 1 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
특정 규칙의 게임을 두 플레이어가 진행할 때, 각 플레이어의 최종 점수를 계산하는 문제입니다.
게임의 규칙은 다음과 같습니다.
- 두 플레이어가
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;
}