컴굥일지

[BOJ/백준 20044][C++] Project Teams 본문

알고리즘/코테 문제

[BOJ/백준 20044][C++] Project Teams

gyong 2022. 1. 10. 04:33
반응형

문제

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

 

문제 내용

학생들의 코딩 역량을 입력받아 두명씩 팀을 짠다.
이때, 팀의 코딩 역량의 차이가 최소화 되어야 한다.

 

문제 풀이

학생들의 코딩 역량을 입력받아 값을 정렬한다.
그리고 배열의 양쪽 끝에서부터 팀을 만들어가면 된다. (가장 작은 값과 가장 큰 값을 이어주는 것)

 

코드

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, a, num, mmin;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	
    //입력
	cin >> n; //팀의 개수
	vector<int>v;
	for (int i = 0; i < 2*n; i++) { //학생 수는 팀 개수*2
		cin >> a;
		v.push_back(a);
	}
    
    //문제 해결
	sort(v.begin(), v.end()); //정렬

	mmin = 1e9;
	for (int i = 0; i < n; i++) {
    	//양쪽 끝에서 같은 위치에 있는 값을 더함 (같은 팀)
		num = v[i] + v[2 * n - i - 1]; 
		mmin = min(mmin, num); //최소값 계산
	}

	//결과 출력
	cout << mmin << '\n';	
}

 

문제 코드 설명

1) 입력

팀의 개수 N을 입력받아 학생들의 점수를 입력받기 때문에 vector를 사용한다. (동적배열)

 

2) 문제 해결

배열을 정렬하고, 팀의 코딩 역량 값을 구한다.
반복문을 도는 동안, 매번 최소값을 갱신한다.

반응형
Comments