728x90
SMALL
백준 문제 풀이: 10801 [카드 게임]
문제 링크: https://www.acmicpc.net/problem/10801
문제 설명:
A와 B 두 사람이 각 10장의 카드를 가지고 있으며, 각 라운드에서 카드를 비교하여 더 큰 숫자를 가진 사람이 승리합니다. 모든 라운드의 결과를 통해 A가 더 많은 라운드에서 승리했는지, B가 더 많은 라운드에서 승리했는지, 또는 비겼는지를 판단합니다.
문제 해결 코드
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int A[10], B[10]; // A와 B의 카드 배열
for (int i = 0; i < 10; i++) {
cin >> A[i];
}
for (int i = 0; i < 10; i++) {
cin >> B[i];
}
int aWins = 0, bWins = 0; // A와 B의 승리 횟수
// 각 라운드에서 카드 비교
for (int i = 0; i < 10; i++) {
if (A[i] > B[i]) {
aWins++;
} else if (A[i] < B[i]) {
bWins++;
}
}
// 결과 출력
if (aWins > bWins) {
cout << "A";
} else if (aWins < bWins) {
cout << "B";
} else {
cout << "D"; // 비긴 경우
}
return 0;
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명.
- 핵심 알고리즘:
- 10번의 라운드에서 A와 B의 카드를 비교하여 승리 횟수를 누적합니다.
- 각 라운드에서 A의 카드가 B보다 크면 A의 승리 횟수를 증가시키고, 반대의 경우에는 B의 승리 횟수를 증가시킵니다.
- 최종적으로 승리 횟수를 비교하여 결과를 출력합니다.
- 구현 세부사항:
- 두 배열
A
와B
에 각각 10개의 카드 값을 저장합니다. aWins
와bWins
변수를 사용하여 A와 B의 승리 횟수를 기록합니다.- 10번의 반복문을 통해 각 라운드의 카드 값을 비교하여 승리 횟수를 누적합니다.
- 두 배열
- 시간 복잡도 분석:
- 10개의 라운드를 비교하므로 시간 복잡도는 O(10)이며 상수 시간 내에 해결 가능합니다.
결과
두 사람이 플레이한 10번의 라운드 결과를 바탕으로, 더 많은 라운드에서 승리한 사람을 출력합니다. A가 승리하면 "A", B가 승리하면 "B", 비길 경우 "D"를 출력합니다.
해당 문제에 대한 다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 11723번 [집합](C++) -yes6686- 티스토리 (0) | 2024.12.25 |
---|---|
백준 29986번 [Amusement Park Adventure](C++) -yes6686- 티스토리 (0) | 2024.12.21 |
백준 3059번 [등장하지 않는 문자의 합](C++) -yes6686- 티스토리 (0) | 2024.12.16 |
백준 1453번 [피시방 알바](C++) -yes6686- 티스토리 (0) | 2024.12.16 |
백준 1871번 [좋은 자동차 번호판](C++) -yes6686- 티스토리 (1) | 2024.12.15 |