알고리즘 공부/CodeUp 문제풀이

코드업 1754:큰 수 비교

티들 2023. 9. 20. 23:08

문제 설명

우리는 숫자를 int나 long long으로 숫자를 처리하였다.

이번엔 그보다 더 큰 숫자를 비교해보자.

최대 100자리의 두 숫자가 입력되면 작은수와 큰 수를 차례대로 출력하시오.

 

입력

정수 두개가 입력된다.(최대 100자리) - 같은 숫자는 입력되지 않는다.

 

출력

작은수 큰수 순서로 출력한다.

 

입력 예시

9999999999999999999999999 9999999999999999999999998

 

출력 예시

9999999999999999999999998 9999999999999999999999999

 

나의 코드

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

int main()
{
    char str1[100], str2[100];
    scanf("%s %s", str1, str2);	
    if(strlen(str1) > strlen(str2)) {	// 문자열의 길이 비교 후 출력
        printf("%s %s", str2, str1);
    }
    else if(strlen(str1) < strlen(str2)) {
        printf("%s %s", str1, str2);
    }
    else {
        for(int i=0;i<strlen(str1);i++)	// 문자열 길이 만큼 반복
        {
            if(str1[i] > str2[i])	// 문자열 아스키 코드 비교
            {
                printf("%s %s", str2, str1);	// 출력 후 종료
                return 0;
            }
            else if(str1[i] < str2[i])
            {
                printf("%s %s", str1, str2);
                return 0;
            }
        }
    }
    return 0;
}

 

모범 답안

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

int main()
{
	int l1, l2;
	char str1[101], str2[101];
	int i;
	
	scanf("%s %s", str1, str2);
	l1 = strlen(str1);
	l2 = strlen(str2);
	
	if (l1 > l2) 
		printf("%s %s", str2, str1);
	else if (l1 < l2)
		printf("%s %s", str1, str2);
	else {
		for(i = 0; i < l2; i++)
			if (str1[i] > str2[i]) {
				printf("%s %s", str2, str1);
				return 0;
			}
			else if (str1[i] < str2[i]) {
				printf("%s %s", str1, str2);
				return 0;	
			}
			else ;
	}
	

	return 0;
}

 

문제 바로가기 : https://codeup.kr/problem.php?id=1754