※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 13560번 문제인 축구 게임이다.
문제는 아래 링크를 확인하자.

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

 

13560번: 축구 게임

프로그램은 표준 입력에서 읽어야 합니다. 입력은 두 줄로 이루어져 있고, 첫째 줄은 하나의 정수 n (2 ≤ n ≤ 10,000) 이고, 팀의 개수를 의미합니다. 다음 줄은 각 팀에서 보고한 점수들입니다. 각

www.acmicpc.net

우선, 총 경기수의 총합이 올바르게 들어왔는지 확인해야한다.

그 외로, 두번째 예제에서도 보이듯이, N개의 팀 중 가장 많이 이긴 k개의 팀의 승리 횟수의 합이 (N-1) + (N-2) + ... + (N-k)을 넘어설 수 없다는 것을 확인해야한다.

그 외의 모든 경우, 주어진 입력과 같은 승패는 항상 만들 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <algorithm>
using namespace std;

int arr[10000];
int comp(int x, int y) {
	return x > y;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	for (int i = 0; i < N; i++) cin >> arr[i];
	sort(arr, arr + N, comp);
	int mx = 0;
	int sum = 0;
	for (int i = 0; i < N; i++) {
		mx += N - 1 - i;
		sum += arr[i];
		if (sum > mx) {
			cout << -1;
			return 0;
		}
	}
	if (mx != sum) cout << -1;
	else cout << 1;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 3687 // C++] 성냥개비  (0) 2021.07.09
[BOJ 18859 // C++] 부모님께 큰절 하고  (0) 2021.07.08
[BOJ 16566 // C++] 카드 게임  (0) 2021.07.06
[BOJ 17409 // C++] 증가 수열의 개수  (0) 2021.07.05
[BOJ 14860 // C++] GCD 곱  (0) 2021.07.04

+ Recent posts