[백준 10801] 카드게임 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
두 플레이어가 각각 10장의 카드를 낸 후, 각 라운드마다 더 높은 숫자를 낸 쪽이 승리하는 방식으로 전체 승부를 결정하는 문제입니다.
A와B는 각각10장의 카드를 한 줄씩 입력받습니다.- 각 라운드마다
A와B가 한 장씩 카드를 낸다고 가정하며, 다음 기준으로 승패를 결정합니다:A의 카드 > B의 카드→ A 승B의 카드 > A의 카드→ B 승같을 경우→ 무승부 (승수 증가 없음)
- 10라운드 후 승수가 더 많은 사람이 승자이며,
A가 더 많이 이긴 경우AB가 더 많이 이긴 경우B- 승수가 같다면
D를 출력합니다.
접근법
A의 카드 10장과B의 카드 10장을 각각 입력받습니다.10번 반복하며 각 카드 쌍을 비교합니다.A가 이긴 횟수와B가 이긴 횟수를 누적 집계합니다.- 최종적으로 승수를 비교하여 결과를 출력합니다.
- 카드의 값 비교만으로 처리되므로 시간 복잡도는
O(10), 상수 시간입니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Linq;
class Program {
static void Main() {
var cardA = Console.ReadLine().Split().Select(int.Parse).ToArray();
var cardB = Console.ReadLine().Split().Select(int.Parse).ToArray();
int aWin = 0, bWin = 0;
for (int i = 0; i < 10; i++) {
if (cardA[i] > cardB[i]) aWin++;
else if (cardA[i] < cardB[i]) bWin++;
}
Console.WriteLine(aWin > bWin ? "A" : bWin > aWin ? "B" : "D");
}
}
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
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int cardA[10], cardB[10];
for (int i = 0; i < 10; i++)
cin >> cardA[i];
for (int i = 0; i < 10; i++)
cin >> cardB[i];
int cntAWin = 0, cntBWin = 0;
for (int i = 0; i < 10; i++) {
if (cardA[i] > cardB[i]) cntAWin++;
else if (cardA[i] < cardB[i]) cntBWin++;
}
if (cntAWin > cntBWin) cout << "A\n";
else if (cntAWin < cntBWin) cout << "B\n";
else cout << "D\n";
return 0;
}