티스토리 뷰

#include <stdio.h>
#include <stdlib.h>

int cmp(const void*a,const void*b) {return(*(int*)a-*(int*)b);}

int main(void) {
	int n,k,i,x,y;
	scanf("%d %d",&n,&k);
	int a[n];
	for(i=0;i<n;i++) {
		scanf("%d %d",&x,&y);
		y-=x;
		if(y>0) a[i]=y; else{a[i]=1e9;--k;}
	}
	qsort(a,n,4,cmp);
	printf("%d",(k>0)?a[k-1]:0);
}

 

풀이 : 정렬

 

정렬은 stdlib.h 에 있는 qsort 을 이용하였습니다.

 

qsort(정렬할 배열의 주소값, 요소의 개수, 배열 요소의 자료형의 크기, 비교를 위한 함수의 주소 (함수의 이름이 함수의 주소)

 

비교할 때 사용하는 함수의 기본 형태는

 

(비교하는 요소의 type) 함수의 이름 (const void * a, const void * b) {} 이며

 

 

 

복습 : const

const void * a;

a = &p; //주소 대입은 가능

*a = 10000; //그 주소에 있는 값을 수정할 순 없음

 

void const *a;

a = &p; // 주소 대입 불가능

*a = 10000; //그 주소에 있는 값을 수정할 순 있음


 

복습 : 강제 형변환

 

void * 는 참조가 불가능 하나 왼쪽에 참조하고자 하는 pointer type으로 강제형변환 해주면 된다.

 

void * a 는

*(int*)a 이렇게 int type 으로 참조 할 수 있게 된다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함