반응형
https://www.acmicpc.net/problem/11637
11637번: 인기 투표
각 테스트 케이스는 첫 번째 줄부터 순서대로 출력된다. 최다 득표자가 과반수 득표를 했을경우에는 "majority winner R", 절반 이하의 득표를 하였을 경우엔 "minority winner R"가 되며, 최다 득표자가 없
www.acmicpc.net
조건에 따른 구현문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. test case 수 t, test case당 후보자 수 n, 전체 투표 수 totalVote, 최다 투표수 maxVote, 각 후보자의 투표수를 저장할 vector candidates, 최다 득표 후보자 번호를 저장할 vector majorCandidate를 선언한 후 적절히 입력받습니다.2. 매 test case마다 적절히 초기화해줍니다.3. 후보자 당 투표수를 입력받을 때마다 totalVote, 최대 투표수 maxVote에 값을 갱신해 저장합니다.
📔 풀이과정
모든 후보자를 확인하는 for loop를 수행합니다.
최대 투표수에 해당하는 후보자의 번호를 majorCandidate에 push_back해줍니다.
📔 정답출력
조건에 따라 정답을 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int t, n, totalVote, maxVote;
vector <int> candidates, majorCandidate;
int main(){
cin >> t;
while(t--){
cin >> n;
totalVote = 0, maxVote = 0;
candidates.resize(n);
majorCandidate.clear();
for(int i = 0; i < n; i++) {
cin >> candidates[i];
totalVote += candidates[i];
maxVote = max(maxVote, candidates[i]);
}
for(int i = 0; i < n; i++)
if(candidates[i] == maxVote)
majorCandidate.push_back(i+1);
if(majorCandidate.size() > 1) cout << "no winner\n";
else if(totalVote / 2 < maxVote) cout << "majority winner " << majorCandidate[0] << '\n';
else cout << "minority winner " << majorCandidate[0] << '\n';
}
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 11536 : 줄 세우기 (1) | 2022.04.28 |
---|---|
(C++) - 백준(BOJ) 24218 : Double Crypt 1 (0) | 2022.04.25 |
(C++) - 백준(BOJ) 14491 : 9진수 (0) | 2022.04.23 |
(C++) - 백준(BOJ) 16171 : 나는 친구가 적다 (Small) (2) | 2022.04.15 |
(C++) - 백준(BOJ) 14582 : 오늘도 졌다 (0) | 2022.04.12 |