백준(BaekJoon)

[BaekJoon/C] No.25305 : 커트라인

ekdnjs510 2024. 8. 20. 19:55
728x90

https://www.acmicpc.net/problem/25305

No.25305 문제

 

문제해석

 

1) 총 인원 수(N), 상을 받는 인원 수(k)를 입력받습니다.
2) 각 학생의 점수를 배열을 통해 입력받는다.
3) 점수가 높은 순으로 정렬하고, k번째 학생의 점수를 출력합니다.

여기서 k번째 점수를 출력하기 위해 i가 k-1에 도달하면 반복을 종료하도록 합니다. 이유는 외부 루프 i가 상을 받는 인원 수보다 1작을 때는 이미 내부 루프에서 k번째 순위까지 매겼기 때문입니다.

 

소스코드 & 문제풀이

 

#include<stdio.h>

int arr[1000];
int N, k, tem;

int main() {
	scanf("%d %d", &N, &k); // 총 인원 수(N)과 상을 받는 인원 수(K)를 입력받습니다
	
    // 배열을 이용해 총 인원 수만큼 배열에 저장합니다
    for (int i = 0; i < N; i++) {
		scanf("%d", &arr[i]);
	}
    
    // 총 인원 수만큼 반복문을 순회하며 배열의 순서를 점수가 높은 순으로 정렬시켜줍니다 
	for (int i = 0; i < N; i++) {
		for (int j = i + 1; j < N; j++) {
			if (arr[i] < arr[j]) {
				tem = arr[i];
				arr[i] = arr[j];
				arr[j] = tem;
			}
		}
		// 반복문의 i가 k-1에 도달하면 반복을 종료합니다
        if (i == k - 1)
			break;
	}
	printf("%d", arr[k - 1]); 
	return 0;
}

 

제 입출력 결과

728x90