작성일 :

문제 링크

27736번 - 찬반투표

설명

찬반투표 결과가 주어질 때, 투표 결과를 판정하는 문제입니다.

기권이 전체의 절반 이상이면 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;
}