#36. 백준 10818번 문제 풀이: 최소, 최대 | 문제 원본 보기 |
--입력-- 5 20 10 35 30 7 --출력-- 7 35
루프를 돌리면서 최대값과 최솟값을 비교하면서 값을 저장해 둔다. 중요한 것은 처음 초기값을 정하는 일이다. 문제 조건에 정수 -1,000,000 과 1,000,000 사이라 했으니 초기값을 최댓값 -1,000,000, 최솟값을 1,000,000 으로 잡는 방법이 있다. 다른 방법은 첫번째 입력된 값을 최솟값과 최댓값으로 잡는 방법도 있다. 여기서는 첫번째 입력값을 최대, 최솟값으로 초기화 하고 풀어 보자. -- 최솟값=첫번째 입력값 최댓값=첫번째 입력값 루프: if(최솟값 > 비교값) 최솟값 = 비교값 if(최댓값 < 비교값) 최댓값 = 비교값 출력(최솟값, 최댓값)
#include <stdio.h>
int main() {
int i, n, v, min, max;
scanf("%d", &n); // 숫자를 입력받아 정수로 변환해서 n(정수의 개수) 에 대입
for(i = 0; i < n; i++) { // 주어진 개수 만큼 루프
scanf("%d", &v); // 수열을 하나씩 입력받는다.
if(i == 0) {
min = max = v; // 처음에는 최대/최소값을 첫번 째 입력 값으로 대입
} else {
if(min > v) min = v; // 최솟값보다 작으면 값 변경
if(max < v) max = v; // 최댓값보다 크면 값 변경
}
}
printf("%d %d", min, max); // 최솟값 최댓값 출력
return 0;
}