작성일 :

문제 링크

8806번 - Papier kamień nożyczki

설명

AdamGosia 가 ‘가위 바위 보’ 게임을 했을 때, 각각이 어떤 것을 낼 지에 대한 확률을 바탕으로 승자를 추측하는 문제입니다.

입력으로 각 플레이어가 가위를 낼 확률, 바위를 낼 확률, 보를 낼 확률 이 주어졌을 때,

각각의 경우에 대한 확률을 계산하여 승자가 누구일 지 판별하여 이름을 출력합니다.

만약, 두 플레이어가 승리할 확률이 동일하다면, = 를 출력합니다.


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

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

      for (int i = 0; i < t; i++) {
        var input = Console.ReadLine()!.Split(' ');
        var x1 = double.Parse(input[0]);
        var y1 = double.Parse(input[1]);
        var z1 = double.Parse(input[2]);
        input = Console.ReadLine()!.Split(' ');
        var x2 = double.Parse(input[0]);
        var y2 = double.Parse(input[1]);
        var z2 = double.Parse(input[2]);

        var adamWin = x1 * y2 + y1 * z2 + z1 * x2;
        var gosiaWin = x2 * y1 + y2 * z1 + z2 * x1;

        if (adamWin > gosiaWin) Console.WriteLine("ADAM");
        else if (adamWin < gosiaWin) Console.WriteLine("GOSIA");
        else Console.WriteLine("=");
      }

    }
  }
}



[ C++ ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>

using namespace std;

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

  int t; cin >> t;
  for (int i = 0; i < t; i++) {
    double x1, y1, z1, x2, y2, z2;
    cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;

    double adamWin = x1 * y2 + y1 * z2 + z1 * x2;
    double gosiaWin = x2 * y1 + y2 * z1 + z2 * x1;

    if (adamWin > gosiaWin) cout << "ADAM\n";
    else if (adamWin < gosiaWin) cout << "GOSIA\n";
    else cout << "=\n";
  }

  return 0;
}