문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력 1
5
20 10 35 30 7
예제 출력 1
7 35
문제 설명
첫째 줄의 정수의 개수만큼 입력하고 그 중에서 최소와 최대를 찾는 문제다.
문제 풀이
입력 조건에서 모든 정수는 -1,000,000~1,000,000이다. 따라서 최대와 최소를 그에 맞게 초기화해준다. 메모리 낭비를 줄이고자 입력하면서 비교하는 for문을 만든다.
Solution
#include <stdio.h>
int main() {
int N,num;
int min=1000000, max=-1000000;
scanf("%d",&N);
for(int i=0; i<N; i++){
scanf("%d",&num);
if(num < min) min = num;
if(num > max) max = num;
}
printf("%d %d", min, max);
return 0;
}
- 배열을 이용하려면 for문 전에 int num[N];선언해주고, for문 내의 num을 모두 num[i]로 바꿔주면 된다.
Review
연속으로 데이터를 입력받아야 할 때 항상 배열을 먼저 생각하고는 하는데, 메모리 공간을 불필요하게 많이 사용할 수도 있다고 하니 입력값을 받으면서 바로 비교하는 게 좋을 것 같다.
'BOJ 코딩테스트 > Bronze' 카테고리의 다른 글
BOJ 2884번 : 알람 시계 (C언어/Bronze 3) (0) | 2022.06.24 |
---|---|
BOJ 7567번 : 그릇 (C언어/Bronze 2) (0) | 2022.06.24 |
BOJ 5543번 : 상근날드 (C언어/Bronze 4) (0) | 2022.05.24 |
BOJ 15849번 : 수학은 체육과목 입니다 (C언어/Bronze 5) (0) | 2022.05.24 |
BOJ 2562번 : 최댓값 (C언어/Bronze 2) (0) | 2022.05.12 |