[C언어 코드업 문제풀이] CodeUp 1420 : 3등 찾기

코드업 1420번 3등 찾기 문제 풀이 해답입니다.

 

1. 문제 설명

 

 민준이는 뒤늦게 정보 과목의 중요성을 깨닫고 학습실에서 공부를 하고 있다.

기본 공부가 너무 안 되어 있어 아주 쉬운 문제부터 어려움을 겪은 민준이는 친구에게 물어보려고 한다.

가장 잘 하는 친구에게 물어보기는 질문의 내용이 너무 부끄러워 n명의 친구들 중 정보 성적이 3번째로 높은 친구에게 묻고자 한다.

친구들의 성적은 모두 다르다.

n명의 친구들의 이름과 정보 성적이 주어졌을 때 성적이 세 번째로 높은 학생의 이름을 출력하시오.

 

2. 입력

 

첫째 줄에 n이 입력된다. ( 3 <= n <= 50 )

둘째 줄 부터 n+1행까지 친구의 이름과 점수가 공백으로 분리되어 입력된다. 이름은 영문

 

 

3. 출력

 

세 번째로 높은 학생의 이름을 출력한다.

 

4. 입력 예시

 

5

minsu 78

gunho 64

sumin 84

jiwon 96

woosung 55

 

5. 출력 예시

 

minsu

 

6. 문제 풀이

 

#include<stdio.h>
 
 
int main(){
 
    int Score_Buf1[50];
    int Score_Buf2[50];
    char Name_buf[50][50= {};
    
    int i_friendNum;
    scanf("%d",&i_friendNum);
    
    for(int i = 0; i < i_friendNum; i++){
        scanf("%s %d",Name_buf[i],&Score_Buf1[i]);
        Score_Buf2[i] = Score_Buf1[i];
    } // score information input
    
    int temp =0 ;
    for(int i = 0 ; i < i_friendNum-1 ; i ++) {
        for(int j = i+1 ; j < i_friendNum ; j ++) {
            if(Score_Buf2[i] < Score_Buf2[j]) {
                temp = Score_Buf2[j];
                Score_Buf2[j] = Score_Buf2[i];
                Score_Buf2[i] = temp;
            }
        }
    }
    
    for(int i = 0 ; i <  i_friendNum ; i ++) {
        if(Score_Buf1[i] == Score_Buf2[2]){
            printf("%s",Name_buf[i]);
        }
    }
    
    return 0;
    
 
}
 

 

총 3개의 배열을 사용합니다.

    int Score_Buf1[50];  // 점수 저장

    int Score_Buf2[50]; // 정렬할 점수 저장

    char Name_buf[50][50= {}; //이름 [순서][이름]

 

   for(int i = 0; i < i_friendNum; i++){

        scanf("%s %d",Name_buf[i],&Score_Buf1[i]);

        Score_Buf2[i] = Score_Buf1[i];

    }

를 통해 이름과 점수를 입력 받습니다. 

 

그 후 Score_Buf2를 점수순으로 정렬하게 되면 Score_Buf2[2]의 점수가 3번째로 높은 점수가 됩니다.

 

 if(Score_Buf1[i] == Score_Buf2[2])를 만족하는 i값의 이름을 출력하면 3번째 점수를 갖고있는 학생의 이름을 얻을 수 있습니다.

 

감사합니다.

 

댓글()