별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오.

배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다.


 

입력

첫째 줄에 테스트 케이스의 개수 T(1 <= T <= 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 

원소는 1보다 크거나 같고, 1,000보다 작거나 같은 자연수이다.

 

 

출력

각 테스트 케이스에 대해 한 줄에 하나씩 배열 A에서 3번째 큰 값을 출력한다.

 

 

예제 입력 1

 4

 1 2 3 4 5 6 7 8 9 1000

 338 304 619 95 343 496 489 116 98 127

 931 240 986 894 826 640 965 833 136 138

 940 955 364 188 133 254 501 122 768 408

 

예제 출력 1

 8

 489

 931

 768

 

 

출처

ICPC > Regionals > North America > Greater New York Region > 2009 Greater New York Programming Contest A번

· 문제를 번역한 사람: baekjoon

· 잘못된 데이터를 찾은 사람: occidere

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
#define CNT 10
#define NTH 3   // N번째로 큰 수
 
int main() {
    int num, ary[CNT];
    vector<int> vec;
 
    cin >> num;
 
    for (int i = 0; i < num; i++) {
        for (int j = 0; j < CNT; j++) {
            cin >> ary[j];
        }
        sort(ary, ary + CNT);
        vec.push_back(ary[CNT - NTH]);
    }
    
    for (int i = 0; i < vec.size(); i++) {
        cout << vec.at(i) << endl;
    }
 
    return 0;
}




배열과 벡터를 적절히 사용하여 푼 문제.

배열에 10개의 숫자를 입력 받자 마자 sort() 함수를 이용하여 오름차순으로 정렬한 후, 3번째로 큰 수를 push_back()을 함수를 사용하여 바로 벡터에 넣었다.

이 과정을 총 num번 반복하고 나중에 벡터에 담겨 있는 숫자를 0번 인덱스부터 하나씩 출력하면 된다.


728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ10773][C++] 제로  (0) 2020.11.05
[BOJ10808][C++] 알파벳 개수  (0) 2020.11.03
[BOJ1712][C++] 손익분기점  (0) 2020.10.24
[BOJ1193][C++] 분수 찾기  (0) 2020.10.24
[BOJ2947][C++] 나무 조각  (0) 2020.06.05
[BOJ2753][C++] 윤년  (0) 2019.09.21
[BOJ1181][C++] 단어 정렬  (2) 2018.11.17
[BOJ16430][C++] 제리와 톰  (0) 2018.11.13
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖