본문 바로가기
[C++] 알고리즘 교육/1~4. 기본기

[알고리즘 2.2.3] 배열 - 두 번째 최소값 찾기

by 안산학생 2019. 4. 23.

문제

9개의 서로 다른 자연수가 주어질 , 이들 번째 최소값을 찾고, 번째 최소값이 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 주어지면, 이들 번째 최소값은 12이고, 값은 4번째 수이다.

 

입력

첫째 줄부터 아홉 번째 줄까지 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 10,000,000 보다 작다.

 

출력

첫째 줄에 번째 최소값을 출력하고, 둘째 줄에 번째 최소값이 번째 수인지를 출력한다.

 

예제 입력

3

29

38

12

57

74

40

85

61

예제 출력

12

4

 

 

 

 

 

 

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
 
int main() {
  
  int arr[9];
  int i, min, num, min2, num2;
  
  for(i=0; i<9; i++){
    scanf("%d"&arr[i]);
  }
  
  min = arr[0];
  num = 1;
  
  for(i=0; i<9; i++){
    if(arr[i]<min){
      min = arr[i];
      num = i+1;
    }
  }
  
  if(num == 1){
    min2 = arr[1];
    num2 = 2;
  }else{
    min2 = arr[0];
    num2 = 1;
  }
 
  
  for(i=0; i<9; i++){
    if(i != num-1){
      if(arr[i]>min && arr[i]<min2){
        min2 = arr[i];
        num2 = i+1;
      }
    }
  }
  
  
  printf("%d\n%d", min2, num2);
 
  return 0;
}

댓글