티스토리 뷰

Source

문제

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

출력

첫째 줄에 상수의 대답을 출력한다.

예제 입력 1

734 893

예제 출력 1

437

해설

정수를 입력받아 각 자리수를 역순으로 하는 수를 만들 수 있느냐가 초점이다. 나누기 연산과 나눗셈 연산을 이용하여 각 자리수의 유효숫자를 빱아낸 후에 유효숫자를 역순으로 바꾼 10진수로 환산한다. 이 문제는 세자리 정수가 입력되므로 각 유효숫자를 저장한 first, second, third 변수를 선언한 후 일의 자리의 유효숫자는 num % 10으로, 십의 자리의 유효숫자는 (num / 10) % 10으로, 백의 자리 유효숫자는 num / 100으로 얻을 수 있다. 이를 함수로 만들면 아래와 같다.

int Reversed_Num(int num)
{
    int first, second, third;
    first = num % 10;
    second = (num / 10) % 10;
    third = num / 100;

    return first * 100 + second * 10 + third;
}

이 함수를 통해 얻은 두 수를 대소비교하여 출력하면 끝나는 문제다.

소스코드: C

#include <stdio.h>

int Reversed_Num(int num);

int Reversed_Num(int num)
{
    int first, second, third;
    first = num % 10;
    second = (num / 10) % 10;
    third = num / 100;

    return first * 100 + second * 10 + third;
}

int main(int argc, char *argv[])
{
    int input_first, input_second;
    int changed_first, changed_second;

    scanf("%d", &input_first);
    scanf("%d", &input_second);

    changed_first = Reversed_Num(input_first);
    changed_second = Reversed_Num(input_second);

    if (changed_first > changed_second) {
        printf("%d\n", changed_first);
    } else {
        printf("%d\n", changed_second);
    }
    return 0;
}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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-25 22:18