본문 바로가기
Develop/백준 (Cpp)

[백준] 4435번 : 중간계 전쟁 (C++)

by Tarra 2023. 2. 6.

4435번 : 중간계 전쟁


문제 )

중간계에 전쟁이 일어나려고 한다. 간달프는 사우론에 대항하기 위한 군대를 소집했고, 여러 종족이 이 군대에 가담했다. 전쟁을 시작하기 전에 간달프는 각 종족에 점수를 매겼다.

간달프의 군대의 각 종족의 점수는 다음과 같다.

  • 호빗 - 1
  • 인간 - 2
  • 엘프 - 3
  • 드워프 - 3
  • 독수리 - 4
  • 마법사 - 10

사우론의 군대의 점수는 다음과 같다.

  • 오크 - 1
  • 인간 - 2
  • 워그(늑대) - 2
  • 고블린 - 2
  • 우럭하이 - 3
  • 트롤 - 5
  • 마법사 - 10

중간계는 매우 신비한 곳이어서 각 전투의 승리는 날씨, 장소, 용맹에 영향을 받지 않는다. 전투에 참여한 각 종족의 점수를 합한 뒤, 큰 쪽이 이긴다.

전투에 참여한 종족의 수가 주어졌을 때, 어느 쪽이 이기는지 구하는 프로그램을 작성하시오.

 

 

입력 :

첫째 줄에 전투의 개수 T가 주어진다. 각 전투는 두 줄로 이루어져 있다. 첫째 줄에 간달프 군대에 참여한 종족의 수가 주어진다. 이 값은 공백으로 구분되어 있으며, 호빗, 인간, 엘프, 드워프, 독수리, 마법사 순서이다. 둘째 줄에는 사우론 군대에 참여한 종족의 수가 주어진다. 이 값 역시 공백으로 구분되어 있으며, 오크, 인간, 워그, 고블린, 우럭하이, 트롤, 마법사 순서이다. 모든 값은 음이 아닌 정수이고, 각 군대의 점수의 합은 32비트 정수 제한을 넘지 않는다.

 

 

 

출력 :

각 전투에 대해서, "Battle"과 전투 번호를 출력한다. 그 다음에 간달프의 군대가 이긴다면 "Good triumphs over Evil"를, 사우론의 군대가 이긴다면 "Evil eradicates all trace of Good", 점수의 합이 같아 이기는 쪽이 없다면 "No victor on this battle field"를 출력한다.

 

 

 

 

 

풀이)

 

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
 
using namespace std;
 
int main()
{
    int t;
    cin >> t;
    
    for (int i = 0; i < t; i++) {
 
        int team1 = 0, team2 = 0;
        int temp;
        // 간달프
        for (int j = 0; j < 6; j++) {
            cin >> temp;
            if (j == 0) {
                team1 += 1 * temp;
            }
            else if (j == 1) {
                team1 += 2 * temp;
            }
            else if (j == 2) {
                team1 += 3 * temp;
            }
            else if (j == 3) {
                team1 += 3 * temp;
            }
            else if (j == 4) {
                team1 += 4 * temp;
            }
            else if (j == 5) {
                team1 += 10 * temp;
            }
        }
 
        // 사우론
        for (int j = 0; j < 7; j++) {
            cin >> temp;
            if (j == 0) {
                team2 += 1 * temp;
            }
            else if (j == 1) {
                team2 += 2 * temp;
            }
            else if (j == 2) {
                team2 += 2 * temp;
            }
            else if (j == 3) {
                team2 += 2 * temp;
            }
            else if (j == 4) {
                team2 += 3 * temp;
            }
            else if (j == 5) {
                team2 += 5 * temp;
            }
            else if (j == 6) {
                team2 += 10 * temp;
            }
        }
 
        cout << "Battle " << i + 1 << ": ";
 
        if (team1 > team2) {
            cout << "Good triumphs over Evil\n";
        }
        else if (team1 < team2) {
            cout << "Evil eradicates all trace of Good\n";
        }
        else {
            cout << "No victor on this battle field\n";
        }
    }
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/4435 

 

4435번: 중간계 전쟁

첫째 줄에 전투의 개수 T가 주어진다. 각 전투는 두 줄로 이루어져 있다. 첫째 줄에 간달프 군대에 참여한 종족의 수가 주어진다. 이 값은 공백으로 구분되어 있으며, 호빗, 인간, 엘프, 드워프,

www.acmicpc.net