작성일 :

문제 링크

5087번 - Card Cutting

설명

카드 목록에서 홀수는 Cheryl, 짝수는 Tania에게 점수를 주고 승자를 출력하는 문제입니다.


접근법

한 줄씩 읽어 * 이전의 카드만 처리하고, A는 1로 바꿔 홀짝을 판별합니다.
두 사람 점수를 비교해 Cheryl, Tania, Draw 중 하나를 출력합니다.


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
using System;
using System.Text;

class Program {
  static void Main() {
    var sb = new StringBuilder();
    while (true) {
      var line = Console.ReadLine();
      if (line == null || line == "#") break;
      var parts = line.Split(' ');

      var odd = 0;
      var even = 0;
      foreach (var s in parts) {
        if (s == "*") break;
        var v = (s == "A") ? 1 : int.Parse(s);
        if (v % 2 == 1) odd++;
        else even++;
      }

      if (odd > even) sb.AppendLine("Cheryl");
      else if (even > odd) sb.AppendLine("Tania");
      else sb.AppendLine("Draw");
    }
    Console.Write(sb);
  }
}

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);

  string line;
  while (getline(cin, line)) {
    if (line == "#") break;
    stringstream ss(line);
    string s;
    int odd = 0, even = 0;
    while (ss >> s) {
      if (s == "*") break;
      int v = (s == "A") ? 1 : stoi(s);
      if (v % 2 == 1) odd++;
      else even++;
    }

    if (odd > even) cout << "Cheryl\n";
    else if (even > odd) cout << "Tania\n";
    else cout << "Draw\n";
  }

  return 0;
}