📄문제
A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다. 가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.
예를 들어 N=5이면 다음과 같이 나옵니다.
회수 | 1 | 2 | 3 | 4 | 5 |
A | 2 | 3 | 3 | 1 | 3 |
B | 1 | 1 | 2 | 2 | 3 |
결과 | A | B | A | B | D |
두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.
⬇️ 입력
첫 번째 줄에 게임 횟수인 자연수 N(1<=N<=100)이 주어집니다.
두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N개 주어집니다.
세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N개 주어집니다.
5 2 3 3 1 3 1 1 2 2 3 |
⬆️ 출력
A B A B D |
📝 풀이
#include <iostream>
void CheckGame(int a, int b);
int main()
{
int arr[2][101];
int N, A, B;
scanf_s("%d", &N);
for (int i = 0; i < 2; ++i)
for (int j = 0; j < N; ++j)
scanf_s("%d", &arr[i][j]);
for (int i = 0; i < N; ++i)
CheckGame(arr[0][i], arr[1][i]);
}
void CheckGame(int a, int b)
{
// 1: 가위
// 2: 바위
// 3: 보
// 비기는 조건
if (a == b)
{
printf("D\n");
return;
}
// 승부가 나는 조건
switch (a) // A가 낸 것
{
case 1: // 가위
printf("%s\n", b == 3 ? "A" : "B");
break;
case 2: // 바위
printf("%s\n", b == 1 ? "A" : "B");
break;
case 3: // 보
printf("%s\n", b == 2 ? "A" : "B");
break;
}
}
- 2차원 배열을 이용하여 0번째 배열은 A, 1번째 배열은 B가 낸 번호를 저장합니다.
- CheckGame 함수에서 같은 인덱스 번호의 값을 비교하여 누가 이겼는지 판단하여 출력합니다.
- 비기는 경우는 둘이 같은 경우로, 가장 먼저 검사하여 코드를 최소화 하였습니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 온도의 최대값 (0) | 2023.10.13 |
---|---|
[C++] 카드게임 (0) | 2023.10.13 |
[C++] 분노유발자 (0) | 2023.10.13 |
[C++] 층간소음 (1) | 2023.10.13 |
[C++] 선생님 퀴즈 (0) | 2023.10.13 |