[백준 BOJ] 9076번 점수 집계 (C++/cpp)

2022. 7. 3. 01:56PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/9076

 

9076번: 점수 집계

입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고

www.acmicpc.net

백준 BOJ 9076번 점수 집계 문제 사진

 

접근 방법 - 정렬 함수 사용의 기본 문제

백준의 9076번 문제는 정렬 함수 사용에 있어 기본적인 문제이다.

해당 문제는, 입력받은 5개의 점수들에 대해 최종 점수를 출력하거나 재채점 여부에 대해 출력해야 하는 문제이다.

정렬 함수 sort()에 대해 알고 있다면, 문제의 흐름대로 코드를 작성해도 무관할 것이다.

필자 또한 그렇게 코드를 작성하여 문제를 해결하였기 때문에 크게 어렵지는 않을 것으로 예상된다.

혹여나 해당 문제의 해결에 어려움을 겪고 있다면 아래 필자의 설명을 참고해보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 테스트 케이스의 수(n)를 입력받는다.

 

2) n의 크기만큼 반복문을 실행하여 아래의 연산을 취한다.

- 점수를 저장할 배열(arr)을 선언해둔 뒤, 해당 배열에 점수를 차례로 입력받는다.

- arr에 대하여 정렬을 수행한다.

- 문제의 조건대로 조건문을 작성하여 알맞게 출력하도록 한다.

두 번째로 큰 점수에 두 번째로 작은 점수를 뺀 값이 4를 넘어선다면, 재채점을 필요로 하는 문구 "KIN"을 출력한다.

이 값이 4를 넘어서지 않는다면, 점수들 중 3개의 중간값들을 합하여(sum) 이를 출력하도록 한다.

 

3) 모든 테스트 케이스가 수행되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <algorithm>
#define endl '\n'
using namespace std;

//백준 9076번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int arr[5];
		for (int j = 0; j < 5; j++) {
			cin >> arr[j];
		}
		sort(arr, arr + 5);
		if (arr[3] - arr[1] >= 4) { cout << "KIN" << endl; }
		else {
			int sum = arr[1] + arr[2] + arr[3];
			cout << sum << endl;
		}
	}
}

 

제출 결과

백준 BOJ 9076번 점수 집계 문제 C++ 제출 결과

(2022.05.02 백준 9076번 문제 제출 결과)

반응형