#36. 백준 10818번 문제 풀이: 최소, 최대 문제 원본 보기
N개의 정수에서 최솟값과 최댓값을 구하는 프로그램 작성 입력: 첫줄에 정수의 개수 N, 둘째 줄에 N개의 정수가 공백 구분으로 주어진다. 출력: 최대값과 최솟값을 공백으로 출력
입력/출력
--입력--
5
20 10 35 30 7
--출력--
7 35
문제풀이+해설
루프를 돌리면서 최대값과 최솟값을 비교하면서 값을 저장해 둔다.
중요한 것은 처음 초기값을 정하는 일이다.
문제 조건에 정수 -1,000,000 과 1,000,000 사이라 했으니 초기값을 최댓값 -1,000,000, 최솟값을 1,000,000 으로 잡는 방법이 있다.
다른 방법은 첫번째 입력된 값을 최솟값과 최댓값으로 잡는 방법도 있다.
여기서는 첫번째 입력값을 최대, 최솟값으로 초기화 하고 풀어 보자.
--
최솟값=첫번째 입력값
최댓값=첫번째 입력값
루프:
  if(최솟값 > 비교값) 최솟값 = 비교값
  if(최댓값 < 비교값) 최댓값 = 비교값
출력(최솟값, 최댓값)
code sol.
#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;
}
© 코드솔 - CodeSol. All Rights Reserved.