본문 바로가기
C

[C언어] n개의 정수 입력받고 최대값과 최소값, 2번째 최대값과 최소값 출력하기

by 돌맹96 2023. 10. 5.
728x90
반응형

임의의 양의 정수 n을 입력받은 뒤 n개의 정수를 입력받고 그 중 최대값과 최소값, 2번째 최대값과 최소값을 출력하시오. 중복된 값이 입력된 경우에는 다음 예시와 같이 처리하는것을 원칙으로 합니다.
ex. 4 3 3 2 3 -> Max : 3, Min : 2, Second Max : 3, Second Min : 3 (이 예시에서 첫번째 4는 입력의 개수를 의미합니다.)
입력값은 다음을 따릅니다. 4 <= n <= 100, -100 <= ai <= 100 입력받을 다른 정수의 개수를 의미하는 양의 정수 n이 첫줄에 주어집니다. 이후 n개의 줄에 최댓값과 최솟값, 2번째 최댓값과 최솟값을 구해야 할 정수들 a0, a1, ... , an-1이 줄바꿈으로 구분되어 주어집니다. 

 

Code

#include <stdio.h>
#include <limits.h>

int main() {
    int max = INT_MIN, min = INT_MAX;
    int second_max = INT_MIN, second_min = INT_MAX;
    int n, current;

    // 첫 번째 입력: n
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf("%d", &current);

        // 최대값과 두 번째 최대값 업데이트
        if (current > max) {
            second_max = max;
            max = current;
        } else if (current > second_max && current != max) {
            second_max = current;
        }

        // 최소값과 두 번째 최소값 업데이트
        if (current < min) {
            second_min = min;
            min = current;
        } else if (current < second_min && current != min) {
            second_min = current;
        }
    }

    // 결과 출력
    printf("Max: %d, Min: %d, Second_Max : %d, Second_Min : %d", max, min,second_max, second_min);

    return 0;
}
728x90
반응형