문제 해결/BaekJoon
[백준] [C++] 9076번 점수 집계
WSLim_97
2023. 1. 12. 20:22
반응형
https://www.acmicpc.net/problem/9076
9076번: 점수 집계
입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고
www.acmicpc.net
코드
#include <iostream>
using namespace std;
const int COUNT = 5;
void DeleteValue(int arr[], int count);
void Sort(int arr[], int count);
int main()
{
int n, input;
int arr[COUNT] = { };
cin >> n;
for (int i = 0; i < n; i++)
{
int sum = 0;
for (int j = 0; j < COUNT; j++)
{
cin >> input;
arr[j] = input;
}
DeleteValue(arr, COUNT);
Sort(arr, COUNT);
sum = arr[COUNT - 1] + arr[COUNT - 2] + arr[COUNT - 3];
if (arr[COUNT - 1] - arr[COUNT - 3] >= 4)
cout << "KIN" << endl;
else
cout << sum << endl;
}
return 0;
}
void DeleteValue(int arr[], int count)
{
int max = -1, maxIndex = 0;
int min = 11, minIndex = 0;
for (int i = 0; i < count; i++)
{
if (max < arr[i])
{
max = arr[i];
maxIndex = i;
}
if (min > arr[i])
{
min = arr[i];
minIndex = i;
}
}
arr[maxIndex] = 0;
arr[minIndex] = 0;
}
void Sort(int arr[], int count)
{
for (int i = 0; i < count; i++)
{
int min = 101, minIndex = 0;
for (int j = i + 1; j < count; j++)
{
if (min > arr[j])
{
min = arr[j];
minIndex = j;
}
if (j == count - 1 && arr[i] > arr[minIndex])
{
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}
풀이
5개의 점수를 입력받는다. 5개의 점수 중 최고점과 최저점을 제외하고 3개의 값을 더해 출력한다. 이때 남은 3개의 값에서 최고점과 최저점의 차이가 4보다 크거나 같다면 총점 대신 KIN (Keep In Negotiation)을 출력한다.
5개의 점수를 입력받아 배열에 입력한 뒤 DeleteValue 함수를 통해 최고점과 최저점을 찾아 그 점수를 0으로 바꾼다.
남은 3개의 점수를 Sort 함수에 입력하여 오름차순으로 정렬한 뒤 0이 아닌 점수 중 최고점과 최저점을 더해 KIN을 출력할지 말지 결정하고 KIN 또는 점수 합계를 출력하게 한다.
반응형