https://www.acmicpc.net/problem/25305
코드 (C)
#include <stdio.h>
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int n, m, arr[1001];
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] < arr[j + 1]) swap(&arr[j], &arr[j + 1]);
}
}
printf("%d", arr[m - 1]);
return 0;
}
코드 (C++)
#include <iostream>
using namespace std;
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int arr[1001] = {0,};
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++) cin >> arr[i];
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (arr[j] < arr[j + 1]) swap(&arr[j], &arr[j + 1]);
}
}
cout << arr[k - 1];
return 0;
}
코드설명
입력받은 점수들을 내림차순으로 정렬 후 상을 받는 사람 수-1 인덱스에 저장되어 있는 값을 출력하면 된다.
응시자 수와 상을 받는 인원 수를 n,k로 입력받는다.
이후 반복문을 사용해서 배열에 입력받는 점수들을 차례로 저장한다.
버블정렬을 사용해서 내림차순으로 정렬한다.
arr[k-1] 을 출력하고 프로그램을 종료한다.
느낀 점
내가 개인적으로 버블정렬을 좋아해서 제한된 시간이 너무 짧지 않으면 버블정렬을 사용하는 편이다.
배열을 통해 점수들을 저장하고 특정 인덱스의 값을 출력하는 방식으로 금방 풀었다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 3034 앵그리 창영 (0) | 2022.09.15 |
---|---|
[백준/C & C++] 2577 숫자의 개수 (0) | 2022.09.15 |
[백준/C & C++] 15813 너의 이름은 몇 점이니? (0) | 2022.09.11 |
[백준/C & C++] 5565 영수증 (0) | 2022.09.07 |
[백준/C & C++] 2851 슈퍼마리오 (0) | 2022.09.05 |