#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
vector<int> num(n, 0);
for(int i = 0; i < num.size(); i++)
scanf("%d", &num[i]);
sort(num.rbegin(), num.rend());
int count = 1;
int temp = num[0];
for(int i = 0; i < num.size(); i++)
{
if(count == 3)
{
printf("%d", temp);
break;
}
if(temp > num[i])
{
count++;
temp = num[i];
}
}
return 0;
}
1. <algorithm> 헤더의 sort() 를 응용(내림차순으로 정렬)
이전 문제처럼 오름차순이 아니라 내림차순으로 정렬할 때는 sort(num.rbegin(), num.rend()) 를 활용한다.
2. num[0]이 최고점수이며, 1등이기 때문에 count는 1로 초기화한다.
3. 낮은 점수를 만날 때마다 temp가 그 점수로 바뀌고 count++ 을 한다.
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
vector<int> num(n, 0);
for(int i = 0; i < num.size(); i++)
scanf("%d", &num[i]);
int temp = 0;
for(int i = 0; i < n-1; i++)
{
int idx = i;
for(int j = i+1; j < n; j++)
{
if(num[j]>num[idx]) idx = j;
}
temp = num[i];
num[i] = num[idx];
num[idx] = temp;
}
int count = 0;
for(int i = 1; i < n; i++)
{
if(num[i-1] > num[i])
count++;
if(count == 2)
{
printf("%d", num[i]);
break;
}
}
return 0;
}
1. 라이브러리 사용없이 스왑하는 방법이다.