Dev2yup의 프로그래밍 이야기 🖥 💻

C

[19] C 백준 2908번 상수문제 (문자열)

엽동이 2022. 7. 3. 23:37

문제

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

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

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

입력

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

출력

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

예제 입력 1 복사

734 893

예제 출력 1 복사

437

예제 입력 2 복사

221 231

예제 출력 2 복사

132

예제 입력 3 복사

839 237

예제 출력 3 복사

938

 

<제출한 풀이>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void ReverseString(char num[]);
int main(void)
{
    char num1[4], num2[4], tmp[2];
    int intNum1, intNum2;
    
    scanf("%s %s", num1, num2);
    ReverseString(num1);
    intNum1 = atoi(num1);  // 문자열을 정수로 변환
    ReverseString(num2);
    intNum2 = atoi(num2);

    if (intNum1 > intNum2) printf("%d", intNum1);
    else printf("%d", intNum2);    
}

void ReverseString(char num[])  // 문자열 거꾸로 뒤집는 함수
{
    char temp[4];

    for(int i = 0; i < 4; i++){
        temp[i] = num[4 - i - 2]; // 널문자 제외해서 temp배열에 추가
    }
    strcpy(num, temp);
}

ato..() 는 문자열을 정수형 숫자나 실수형 숫자로 변환하는 함수이다. 이는 <stdlib.h>에 선언되어 있다.

atof() - double

atoi() - int

atol() - long

atoll() - long long