[문제]

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.


[입력]

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.


[출력]

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

백준에서 제시하는 예시


간단한 문제로써, 사실 오늘 내로 코드 하나는 풀어야겠고, 시간은 없고 해서 이걸로 간단하게 하루를 마무리용으로 했다

(나중에는 더 실력을 쌓아서 좀 더 어려운 문제도 금방 금방 해결할 수 있기를...)

 

그런데 이 와중에 처음에는 "컴파일 에러"가 나왔다. 다음 코드처럼 if ~ if ~ 대신에 if ~ else if ~를 했기 때문이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*본코드는 컴파일에러가 뜬다*/
#include <stdio.h>
 
int main(void)
{
    int N, num;
    int max = -1000001, min = 1000001;
    
    scanf("%d"&N);
    
    for (int i = 1; i <= n; i++){
        scanf("%d"&num);
        if (num > max){
            max = num;
        }
        else if (num < min){
            min = num;
        }
    }
    printf("%d %d", min, max);
 
    return 0;
}
cs

 

 

결국, else if가 아닌 if문으로 바꿨을 때야 비로소 제대로 맞았다고 나왔다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(void)
{
    int N, num;
    int max = -1000001, min = 1000001;
    
    scanf("%d"&N);
    
    for (int i = 1; i <= n; i++){
        scanf("%d"&num);
        if (num > max){
            max = num;
        }
        if (num < min){
            min = num;
        }
    }
    printf("%d %d", min, max);
 
    return 0;
}
cs

 

출처: https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

'코딩 문제풀이 및 연습 > [C언어]백준' 카테고리의 다른 글

[백준 6749번]Next in line  (0) 2021.03.17
[백준 2675번]문자열 반복  (0) 2021.03.16
[백준 9012번] Parenthesis  (0) 2020.10.08
[백준 2795번] Transactions  (0) 2020.09.05
[백준 2753번] 윤년  (0) 2020.09.05

+ Recent posts