https://www.acmicpc.net/problem/9017
풀이
문제를 잘못 이해해서 엄청나게 삽질했던 문제...
1. 선수가 6명이 되지 않으면 점수를 받지 않는다.
2. 1~4등까지의 점수 합으로 우승팀을 구한다. 만약 점수합이 같다면 5등의 점수가 더 적은 팀이 우승한다.
위 두 조건을 잘 챙겨서 작성해 주면 된다
제출 코드
#include <iostream>
using namespace std;
int arr[1001];
int teamMem[201];
int teamScr[201];
int teamCnt[201];
int fifthPlayer[201];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t, n;
cin >> t;
while(t--)
{
cin >> n;
int score = 1;
fill_n(arr, 1001, 0);
fill_n(teamMem, 201, 0);
fill_n(teamScr, 201, 0);
fill_n(teamCnt, 201, 0);
fill_n(fifthPlayer, 201, 0);
for (int i = 0; i < n; i++)
{
int input;
cin >> input;
arr[i] = input;
if (teamMem[arr[i]]++ == 4)
fifthPlayer[arr[i]] = i;
}
for (int i = 0; i < n; i++)
{
if (teamMem[arr[i]] < 6) continue;
if (teamCnt[arr[i]] > 3)
{
score++;
continue;
}
teamScr[arr[i]] += score++;
teamCnt[arr[i]]++;
}
pair<int, int> winner = {0, 60000};
for (int i = 1; i <= 200; i++)
{
if (teamScr[i] == 0 || teamScr[i] > winner.second) continue;
if (teamScr[i] == winner.second && fifthPlayer[i] > fifthPlayer[winner.first]) continue;
winner.first = i;
winner.second = teamScr[i];
}
cout << winner.first << '\n';
}
}
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 1913] 달팽이 (0) | 2025.01.17 |
---|---|
[C++][백준 2852] NBA 농구 (0) | 2025.01.17 |
[C++][백준 10709] 기상캐스터 (0) | 2025.01.16 |
[C++][백준 20546] 기적의 매매법 (0) | 2025.01.16 |
[C++][백준 9935] 문자열 폭발 (0) | 2025.01.16 |