본문 바로가기

백준 문제 풀이/c언어

백준 2908 C언어 문제 풀이 - 상수

728x90

문제링크 https://www.acmicpc.net/problem/2908
 

문제 이해

이번 문제는 세 자릿수 두 개를 입력받고, 이들의 숫자를 뒤집어서 크기를 비교하는 문제입니다. 예를 들어, 734와 893을 입력받았을 때, 각각을 뒤집은 수는 437과 398입니다. 이 중 더 큰 수는 437이므로, 이를 출력하면 됩니다.

문제 해결 방법

이 문제를 해결하기 위해서는 입력받은 숫자를 뒤집어서 크기를 비교하면 됩니다. 이때, 숫자를 뒤집는 방법은 다음과 같습니다.

1. 먼저, 숫자를 입력받습니다.
2. 입력받은 숫자를 10으로 나눈 나머지를 구합니다. 이 값을 새로운 숫자에 더합니다.
3. 입력받은 숫자를 10으로 나누어 몫을 구합니다.
4. 몫이 0이 될 때까지 2~3번 과정을 반복합니다.

예제1번을 보면, 734라는 숫자를 뒤집는다면 다음과 같은 과정을 거칩니다.

1. 입력받은 숫자: 734
2. 734 % 10 = 4. 새로운 숫자: 4
3. 734 / 10 = 73
4. 73 % 10 = 3. 새로운 숫자: 43
5. 73 / 10 = 7
6. 7 % 10 = 7. 새로운 숫자: 437
7. 7 / 10 = 0. 종료.

이렇게 뒤집은 숫자를 이용하여 크기를 비교하면 됩니다.

문제 해결 과정

이제 실제로 C언어로 문제를 해결해 보겠습니다.

#include <stdio.h>

int main() {
    int A, B;
    scanf("%d %d", &A, &B); // 두 수를 입력받음

    // A를 뒤집음
    int newA = 0;
    while(A > 0) {
        newA = newA * 10 + (A % 10);
        A /= 10;
    }

    // B를 뒤집음
    int newB = 0;
    while(B > 0) {
        newB = newB * 10 + (B % 10);
        B /= 10;
    }

    // 두 수 중 큰 수를 출력함
    if(newA > newB) printf("%d", newA);
    else printf("%d", newB);

    return 0;
}



우선, `scanf()` 함수를 이용하여 두 수를 입력받습니다. 그리고 첫 번째 수 `A`와 두 번째 수 `B`를 입력받습니다.

이어서, while 문을 이용하여 A와 B를 각각 뒤집은 새로운 수 newA와 newB를 구합니다.

그리고 마지막으로, if 문을 이용하여 두 수 중 큰 수를 출력합니다.

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

 

728x90