문제 설명
세종이는 정보과학 선생님인 JH를 도와주기 위해 정보과학 성적처리 프로그램을 만들기로 했다.
JH 선생님은 학생들의 명단과 점수를 입력하면 상위 m명의 학생 명단을 출력해 주기를 원한다.
다음 조건을 만족하는 프로그램을 작성해 보자.
입력
첫째 줄에 데이터의 개수 n(3<=n<=100)과 출력인원 m(1<=m<=n)이 공백으로 구분되어 입력된다.
둘째 줄부터 학생 이름과 점수(0 100)가 공백으로 구분되어 입력된다.
단 이름의 길이는 최대 10바이트 이내이다.
출력
상위 m명의 학생명단을 출력한다.
단, 출력순서는 점수가 높은 학생이 먼저 출력되며, 점수가 같을 경우 입력 순서가 빠른 순서로 출력한다.
입력 예시
4 2
Jeon 95
Kim 59
Lee 90
Bae 100
출력 예시
Bae
Jeon
나의 코드
#include <stdio.h>
typedef struct student // 구조체
{
char name[10];
int score;
int num;
} STUDENT;
int main()
{
int i, j, n, m;
STUDENT stude[100]; // 구조체 선언
scanf("%d %d", &n, &m); // n, m 입력받음
for (i =0;i<n;i++) // n번 입력 받음
{
scanf("%s %d", stude[i].name, &stude[i].score);
stude[i].num = i; // 입력 받은 순서
}
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
if (stude[i].score < stude[j].score ||
(stude[i].score == stude[j].score && stude[i].num > stude[j].num))
{
STUDENT temp = stude[i]; // 점수나 순서에 따라 배열 순서 변경
stude[i] = stude[j];
stude[j] = temp;
}
}
}
for (i=0;i<m;i++)
{
printf("%s\n", stude[i].name); // 출력
}
return 0;
}
'알고리즘 공부 > CodeUp 문제풀이' 카테고리의 다른 글
코드업 2016:천단위 구분기호(C) (0) | 2023.09.29 |
---|---|
코드업 2008:오름차순? 내림차순? 2(C) (0) | 2023.09.28 |
코드업 4803:개미 (Small) (0) | 2023.09.26 |
코드업 기초 배열연습 1468:2차원 배열 지그재그 채우기 2-1 (0) | 2023.09.24 |
코드업 2844:도서 대출 시스템 (0) | 2023.09.23 |