티스토리 뷰

문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

출력

두 번째로 큰 정수를 출력한다.

예제 입력

20 30 10

예제 출력 1

20

예제 입력 2

30 30 10

예제 출력 2

30

예제 입력 3

40 40 40

예제 출력 3

40

예제 입력 4

20 10 10

예제 출력 4

10

출처: baekjoon

해설

이 문제를 풀 때 주의해야 하는 부분이 세 정수에 같은 수가 들어오는 경우를 적절하게 처리해야 한다는 점이다. 두 정수의 대소 비교시 이 점에 유의해야 의도한 결과를 출력할 수 있다.

이 문제를 푸는 방법은 여럿이다. 기본적으로 if문을 사용하게 되는데 대개는 if ~ else를 중첩하여 세 수를 비교하는 코드를 작성한다. 또는 배열과 반복문(for, while 등)을 이용하여 정렬하는 방식을 취하기도 한다. 여기에서는 일반적인 방법과 비슷하지만 다른 방식으로 접근해 보았다. 초급 문제이므로 되도록 if 문만을 사용하였다. 그런데 중첩된 if ~ else문은 읽기 사나우니 단순한 if 문으로 코딩하였다. 세 정수 A, B, C가 있다면 (A, B), (B, C), (A, C) 세 번의 비교를 통해 세 정수를 큰 순서대로 정렬하도록 하였다. 정렬이 끝난 뒤에 두 번째 정수를 출력하는 방식을 취했다.

소스 코드: c

#include <stdio.h>

int main(int argc, char *argv[])
{
    int num1, num2, num3;
    int tmp;
    scanf("%d %d %d", &num1, &num2, &num3);

    if (num1 < num2) {
        tmp = num1;
        num1 = num2;
        num2 = tmp;
    } 

    if (num2 < num3) {
        tmp = num2;
        num2 = num3;
        num3 = tmp;
    } 

    if (num1 < num2) {
        tmp = num1;
        num1 = num2;
        num2 = tmp;
    } 

    printf("%d", num2);

    return 0;
}

소스 코드: python

num1, num2, num3 = map(int, input().split())

if (num1 < num2):
    tmp = num1
    num1 = num2
    num2 = tmp

if (num2 < num3):
    tmp = num2
    num2 = num3
    num3 = tmp

if (num1 < num2):
    tmp = num1
    num1 = num2
    num2 = tmp

print(num2)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함
11-29 12:45