촉촉한초코칩

[백준] 25305(커트라인) c언어 본문

Algorithm

[백준] 25305(커트라인) c언어

햄친구베이컨 2023. 5. 21. 17:23

문제

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N명의 학생들이 응시했다.

이들 중 점수가 가장 높은 k명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

입력

첫째 줄에는 응시자의 수 N과 상을 받는 사람의 수 k가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 x가 공백을 사이에 두고 주어진다.

출력

상을 받는 커트라인을 출력하라.

 


 

배열을 내림차순으로 정렬하고 k번째 요소 값 출력하기 

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

int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  int *score;
  score = calloc(sizeof(int), n);

  for(int i=0; i<n; i++) {
    scanf("%d", &score[i]);
  }

  for(int i=0; i<n; i++) {
    for(int j=i+1; j<n; j++) {
      if(score[i] < score[j]) {
        int tmp = score[j];
        score[j] = score[i];
        score[i] = tmp;
      }
    }
  }

  for(int i=0; i<n; i++) {
    printf("%d\n", score[i]);
  }

  printf("%d\n", score[k-1]);
  
}

 

이건 예전에 제출했다가 틀린 코드인데 왜 틀렸지...?

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

int main() {
	int n, k, temp = 0;
	int *x;
	while(1) {
		scanf("%d %d", &n, &k);
		if(k<n) 
			break;
	}

	x = calloc(n, sizeof(int));

	for(int i=0; i<n; i++) {
		scanf("%d", &x[i]);
	}

	for(int i=0; i<n; i++) {
		for(int j=0; j<n-1; j++) {
			if(x[j] < x[j+1]) {
				temp = x[j];
				x[j] = x[j+1];
				x[j+1] = temp;
			}
		}
	}

	printf("%d\n", x[k-1]);

	free(x);
}

'Algorithm' 카테고리의 다른 글

08. 문자열  (0) 2023.05.25
[미해결] 2023 인하대학교 프로그래밍 경진대회(IUPC) (A-모비스)  (0) 2023.05.21
[백준] 2501(약수 구하기) c언어  (0) 2023.05.21
07. 집합  (0) 2023.05.15
[백준] 9086(문자열) c언어  (0) 2023.05.06