[C언어 코드업 문제풀이] CodeUp 1167 : 두 번째로 작은 수

코드업 1167 두 번째로 작은 수 문제 풀이 해답입니다.

 

1. 문제 설명

 

세 개의 숫자가 주어질 때 두번째로 작은 수를출력해보자.

예를 들어, 5 9 2 가 있다면 두번째로 작은 수는 5이다.

 

2. 입력

 

세 개의 정수가 공백으로 구분되어 입력된다. 

 

3. 출력

 

세 개의 정수 중 두번째로 작은 숫자를 출력한다.

 

4. 입력 예시

 

201 20 3

 

5. 출력 예시

 

20

 

6. 문제 풀이

#include <stdio.h>
 
 
int main (void)
{
    
    int num1, num2, num3, temp;
    scanf("%d %d %d"&num1, &num2, &num3);
    
    //순서대로 num1,num2,num3 로 정렬해 num2를 출력한다.
    // ex 7 3 4
    // 1. num1과 num2를 비교하여 작은 수가 num1에 들어가게 한다. ->3 7 4
    // 2.
    
    if(num1 >= num2){
        temp = num2;
        num2 = num1;
        num1 = temp;
    }
    if(num2 >= num3){
        temp = num3;
        num3 = num2;
        num2 = temp;
    }
    if(num1 >= num2){
        temp = num2;
        num2 = num1;
        num1 = temp;
    }
 
    printf("%d",num2);
    
 
    return 0;
}
 
 

 

중간에 값을 저장하는 temp 변수를 선언하였습니다.

먼저 num1 과 num2의 값을 비교해 num1이 크다면 

        temp = num2;

        num2 = num1;

        num1 = temp;

를 통해 num1과 num2의 위치를 바꾸어 줍니다. ex) 201 20 3 -> 20 201 3

 

두번째 는 같은 원리로 num2와 num3의 값을 비교해 줍니다.(num2는 바뀌었을 수도 있고 바뀌지 않을 수도 있습니다.)

20 201 3 -> 20 3 201

 

세 번째도 마찬가지로 바꾸어 줍니다. 20 3 201 -> 3 20 201

 

이렇게 구성한다면 정수를 크기별로 정렬할 수 있습니다.

댓글()