[백준/BOJ] 2865. 나는 위대한 슈퍼스타K [Silver 4]

jychan99·2021년 10월 4일
0
post-thumbnail
  1. 나는 위대한 슈퍼스타K

문제출처 : https://www.acmicpc.net/problem/2865

이 문제 푸는데 생각보다 많은 시간이 걸렸다. 중간중간에 커피도 마시고 머리도짜르고 노래도 들으면서 띵가띵가풀긴했지만, 차근차근 잘풀어서 한번만에 통과했다.
핵심은 참가자명수, 참가자번호, 참가자의 능력, 장르를 이차원배열에 잘~ 담아서 인덱스를 잘정리해야 한다.

code

#include <stdio.h>
void BubbleSort(double arr[], int num)
{
	int i, j;
	double temp;
	for (i = num - 1; i > 0; i--)
		for (j = 0; j < i; j++)
			if (arr[j] <= arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
}
int main()
{
	int i, j, N, M, K, temp, score = 0, people = 0;
	int participant[101][101] = { 0 };
	double big=0, ablity[101][101], result = 0, organize[101][101] = { 0 }, list[100] = { 0 };
	scanf("%d %d %d", &N, &M, &K);
	for (i = 0; i < M; i++)
		for (j = 0; j < N; j++)
			scanf("%d %lf", &participant[i][j], &ablity[i][j]);
	while (people < M+1)
	{
		score = 0;
		for (i = 0; i < M; i++)
		{
			for (j = 0; j < N; j++)
			{
				if (participant[i][j] == people+1)
				{
					organize[people][score] = ablity[i][j];
					score++;
				}
			}
		}
		people++;
	}
	for (i = 0; i < N; i++)
	{
		big = 0;
		for (j = 0; j < M; j++)
		{
			if (organize[i][j] > big)
				big = organize[i][j];
		}
		list[i] = big;
	}
	BubbleSort(list, N);
	for (i = 0; i < K; i++)
		result += list[i];
	printf("%.1lf", result);
	return 0;
}

나는 입력받은 정보를 참가자 번호기준으로 다른배열에 정리를 해서 그걸 내림차순으로 정렬시키고, 본선진출 명수K만큼 더해주었다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글