n 라운드가 있는 2인 게임이 있다고 가정합니다. 라운드의 점수는 각 요소가 {P1 점수, P2 점수} 형식인 배열 '점수'로 제공됩니다. 더 높은 점수를 가진 플레이어가 라운드에서 승리하고 플레이어가 더 많은 라운드에서 승리하면 게임에서 승리합니다. 그렇지 않으면 무승부로 선언됩니다. 따라서 점수가 주어지면 누가 게임에서 이겼는지 알아내야 합니다.
따라서 입력이 n =4, 점수 ={{4, 3}, {3, 2}, {5, 6}, {2, 5}}인 경우 출력은 무승부가 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
res := 0 while n is non-zero, do: a := first value of scores[n] b := second value of scores[n] res := res + ((if a > b, then 1, otherwise (if a < b, then -1, otherwise 0))) n := n - 1 return (if res > 0, then "P1", otherwise (if res < 0, then "P2", otherwise "Draw"))
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다.
#include <bits/stdc++.h> using namespace std; #define N 100 string solve(int n, vector<pair<int, int>> scores) { int res = 0; while(n--){ int a = scores[n].first; int b = scores[n].second; res += (a > b ? 1 : (a < b ? -1 : 0)); } return res > 0 ? "P1" : (res < 0 ? "P2" : "Draw"); } int main() { int n = 4; vector<pair<int, int>> scores = {{4, 3}, {3, 2}, {5, 6}, {2,5}}; cout<< solve(n, scores); return 0; }
입력
4, {{4, 3}, {3, 2}, {5, 6}, {2, 5}}
출력
Draw