문제 사이트 : http://codeup.kr/problem.php?id=3015
문제 설명 :
n명의 학생에 대해 이름과 점수를 입력받고 주어진 조건(단, 출력순서는 점수가 높은 학생이 먼저 출력되며, 점수가 같을 경우 입력 순서가 빠른 순서로 출력한다.) 에 따라 첫번째부터 m번째 까지의 학생 이름을 출력하는 문제이다.
-입력-
4 2
Jeon 95
Kim 59
Lee 90
Bae 100
-출력-
Bae
Jeon
요롷게 되면 된다.
해결 방법 :
구조체 설계를 할때 조건에 맞게 정렬을 하기위해서 입력된 순서를 알고있는 녀석을 추가해서
멤버변수로 학생이름, 성적, 학생입력순서 이 세개를 갖도록 설계한다.
struct student{
char name[];
int score;
int number; // 입력순서정보!
}
그리고 sort 함수로 비교함수를 넣어서 구조체 멤버변수 기준으로 조건을 정해서 정렬시키면 원하는 답을 구할 수 있다.
여기서 비교함수를 구현 하는게 조금 애매할 수 있는데 멤버변수 두개를 비교해서 < 면 오름차순 , >면 내림차순, == 같으면 입력순서로 기호에 맞게 정렬을 시켜주면 된다.
'PS > 코드업' 카테고리의 다른 글
1925 (재귀함수) nCr (0) | 2019.05.15 |
---|---|
3704번 계단 오르기 2 (0) | 2019.03.31 |
1920번 2진수 변환 (재귀함수) (0) | 2019.03.16 |
3733번 우박수 길이 - large (0) | 2019.01.27 |
2606. 소수점 이하 출력 (0) | 2018.12.17 |