[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번째 점수를 갖고있는 학생의 이름을 얻을 수 있습니다.
감사합니다.
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1430 : 기억력 테스트 2 (3) | 2020.04.07 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1425 : 자리 배치 (0) | 2020.04.07 |
[C언어 코드업 문제풀이] CodeUp 1416 : 2진수 변환 (0) | 2020.04.07 |
[C언어 코드업 문제풀이] CodeUp 1412 : 알파벳 개수 출력하기 (1) | 2020.04.07 |
[C언어 코드업 문제풀이] CodeUp 1411 : 빠진 카드 (0) | 2020.04.06 |