📄문제
N명의 수학성적이 주어지면 그 중 3등을 한 수학성적을 출력하는 프로그램을 작성하세요.
만약 학생의 점수가 100점이 3명, 99점이 2명, 98점이 5명, 97점이 3명 이런식으로 점수가 분포되면 1등은 3명이며, 2등은 2명이며 3등은 5명이 되어 98점이 3등을 한 점수가 됩니다.
⬇️ 입력
첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 수학성적 점수가 공백을 사이에 두고 입력됩니다. 수학성적 점수는 100점
만점 기준으로 입력됩니다.
7 80 96 75 82 96 92 100 |
⬆️ 출력
3등을 한 점수를 출력합니다.
92 |
📝 풀이
#include <iostream>
#include <vector>
void swap(int& a, int& b) noexcept
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int N;
scanf_s("%d", &N);
std::vector<int> arr(N);
for (int i = 0; i < N; ++i)
scanf_s("%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]);
int rank = 1;
int score = arr[0];
for (int i = 0; i < N; ++i)
if (score != arr[i])
{
score = arr[i];
if (rank++ == 3)
{
printf("%d", score);
return 0;
}
}
}
- 점수를 통해 등수를 내야하기때문에 가장 먼저 정렬을 수행합니다.
- 버블 정렬을 구현하여 정렬을 수행하였습니다.
- 마지막으로 3등을 구하기 위해 score을 저장하고, 첫번째 원소부터 검사하여 값이 달라지는 경우 rank를 1씩 증가시킵니다.
- rank가 3이 되면, 해당 score가 3등의 점수로 출력됩니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] Least Recently Used (1) | 2023.10.15 |
---|---|
[C++] Special Sort (0) | 2023.10.15 |
[C++] 삽입정렬 (1) | 2023.10.14 |
[C++] 버블정렬 (1) | 2023.10.14 |
[C++] 선택정렬 (1) | 2023.10.14 |