[백준 27736] 찬반투표 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
찬반투표 결과가 주어질 때, 투표 결과를 판정하는 문제입니다.
기권이 전체의 절반 이상이면 INVALID, 아니면 찬성이 반대보다 많으면 APPROVED, 그 외에는 REJECTED를 출력합니다.
접근법
먼저 입력을 읽으며 찬성, 반대, 기권의 개수를 셉니다.
기권이 과반 이상이면 INVALID를 출력합니다.
그렇지 않으면 찬성이 반대보다 많으면 APPROVED, 아니면 REJECTED를 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
class Program {
static void Main() {
var n = int.Parse(Console.ReadLine()!);
var votes = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
var agree = 0;
var disagree = 0;
var abstain = 0;
foreach (var v in votes) {
if (v == 1) agree++;
else if (v == -1) disagree++;
else abstain++;
}
if (abstain >= (n + 1) / 2) Console.WriteLine("INVALID");
else if (agree > disagree) Console.WriteLine("APPROVED");
else Console.WriteLine("REJECTED");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int agree = 0, disagree = 0, abstain = 0;
for (int i = 0; i < n; i++) {
int v; cin >> v;
if (v == 1) ++agree;
else if (v == -1) ++disagree;
else ++abstain;
}
if (abstain >= (n + 1) / 2) cout << "INVALID\n";
else if (agree > disagree) cout << "APPROVED\n";
else cout << "REJECTED\n";
return 0;
}