작성일 :

문제 링크

24803번 - Provinces and Gold

설명

손에 든 Gold, Silver, Copper의 구매력으로 살 수 있는 최고 승점 카드와 최고 보물 카드를 출력하는 문제입니다.


접근법

총 구매력을 계산할 때 Gold는 3, Silver는 2, Copper는 1로 계산합니다. 구매력에 따라 살 수 있는 최고 승점 카드와 최고 보물 카드를 결정합니다.

승점 카드를 살 수 있으면 두 카드를 함께 출력하고, 아니면 보물 카드만 출력합니다.


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

class Program {
  static void Main() {
    var parts = Console.ReadLine()!.Split();
    var g = int.Parse(parts[0]);
    var s = int.Parse(parts[1]);
    var c = int.Parse(parts[2]);

    var power = g * 3 + s * 2 + c;

    var victory = "";
    if (power >= 8) victory = "Province";
    else if (power >= 5) victory = "Duchy";
    else if (power >= 2) victory = "Estate";

    var treasure = "";
    if (power >= 6) treasure = "Gold";
    else if (power >= 3) treasure = "Silver";
    else treasure = "Copper";

    if (victory != "") Console.WriteLine($"{victory} or {treasure}");
    else Console.WriteLine(treasure);
  }
}

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
#include <bits/stdc++.h>
using namespace std;

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

  int g, s, c; cin >> g >> s >> c;
  int power = g * 3 + s * 2 + c;

  string victory;
  if (power >= 8) victory = "Province";
  else if (power >= 5) victory = "Duchy";
  else if (power >= 2) victory = "Estate";

  string treasure;
  if (power >= 6) treasure = "Gold";
  else if (power >= 3) treasure = "Silver";
  else treasure = "Copper";

  if (!victory.empty()) cout << victory << " or " << treasure << "\n";
  else cout << treasure << "\n";

  return 0;
}