9개의 서로 다른 자연수가 주어질 때, 이들 중 두 번째 최솟값을 찾고, 그 두 번째 최솟값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 두 번째 최솟값은 12이고, 이 값은 4번째 수이다.
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 10,000,000 보다 작다.
첫째 줄에 두 번째 최솟값을 출력하고, 둘째 줄에 두 번째 최솟값이 몇 번째 수인지를 출력한다.
3
29
38
12
57
74
40
85
61
12
4
#include <stdio.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<pair<int, int>> v;
int main() {
for (int i = 0; i < 9; i++) {
int a;
scanf("%d", &a);
pair<int, int> p = { a, i };
v.push_back(p);
}
sort(v.begin(), v.end());
// compare 함수 없이 위와 같이 sort함수를 사용하면
// pair의 first 기준 오름차순 정렬이 기본적으로 적용된다!!
printf("%d\n", v[1].first);
printf("%d\n", v[1].second + 1);
return 0;
}
// 두 번째 최솟값을 찾는다
// 인덱스 기준 1번째 찾기!
각 수가 처음 입력 시 몇 번째로 입력되었는지에 대한 정보를 가지고 있어야 해서 pair 을 활용해봤다
pair 타입의 vector를 sort하는 내용은 추후 자세히 다뤄보도록 하겠다