본문 바로가기

백준/C

[BaeKJoon/C] 백준2693 c N번째 큰 수

반응형

https://www.acmicpc.net/problem/2693

 

2693번: N번째 큰 수

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

www.acmicpc.net

 

문제

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

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

 

 

입력                                                 출력

4

1     2     3     4     5    6   7   8   9  1000                           8

338 304 619 95 343 496 489 116 98 127                       489

931 240 986 894 826 640 965 833 136 138                    931

940 955 364 188 133 254 501 122 768 408                    768

 

풀이

입력받을 배열을 0으로 초기화 시킨다.  = a[10]={0,0};

n번을 반복시킬 반복문을 만들고

그 반복문에 10개의 수를 입력받을 반복문을 만든다.

10개의 수를 오름차순 또는 내림차순으로 정렬한뒤

배열은 a[0]부터 시작하고 3번째 큰 값을 출력해야 하므로

오름차순은 a[7],  내림차순은 a[2]로 설정한다.

 

코드

내림 차순 일때

#include <stdio.h>
 
int main() {
 
    
    int a[10= { 0, };
    int n, tmp;
    scanf("%d"&n);
 
    for (int i = 0; i < n; i++) {
 
        for (int j = 0; j < 10; j++) {
            scanf("%d"&a[j]);
        }
 
        for (int k = 0; k < 10; k++) {
            for (int x = 0; x < 9; x++) {
                if (a[x] < a[x + 1]) {
                    tmp = a[x];
                    a[x] = a[x + 1];
                    a[x + 1= tmp;
                }
            }
        }
 
        printf("%d\n", a[2]);
    }
    
}



cs

 

코드 2

오름 차순 일때

#include <stdio.h>
 
int main() {
 
    
    int a[10= { 0, };
    int n, tmp;
    scanf("%d"&n);
 
    for (int i = 0; i < n; i++) {
 
        for (int j = 0; j < 10; j++) {
            scanf("%d"&a[j]);
        }
 
        for (int k = 0; k < 10; k++) {
            for (int x = 0; x < 9; x++) {
                if (a[x] > a[x + 1]) {
                    tmp = a[x];
                    a[x] = a[x + 1];
                    a[x + 1= tmp;
                }
            }
        }
 
        printf("%d\n", a[7]);
    }
    
}



cs

 

 

 

 

 

 

 

 

반응형