#015 두 수의 연산값 비교하기

Hyejin Kim·2023년 5월 3일
0

문제

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 x a x b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 2 x a x b가 같으면 a ⊕ b를 return 합니다.

제한사항

1 ≤ a, b < 10,000

입출력 예

a	b	result
2	91	364
91	2	912

입출력 예 설명

입출력 예 #1
a ⊕ b = 291 이고, 2 x a x b = 364 입니다. 둘 중 더 큰 값은 364 이므로 364를 return 합니다.

입출력 예 #2
a ⊕ b = 912 이고, 2 x a x b = 364 입니다. 둘 중 더 큰 값은 912 이므로 912를 return 합니다.

풀이

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

int solution(int a, int b) {
    char str_cat[10];  
    sprintf(str_cat, "%d%d", a, b);
    
    int num_cat = atoi(str_cat);
    int num_times = 2 * a * b;
    
    if (num_cat > num_times)
        return num_cat;
    else
        return num_times;

}

코드 설명

우선, sprintf 함수를 사용하여 a와 b를 문자열로 변환하고, 이를 더하여 str_cat라는 char형 배열에 저장합니다. 이렇게 하면 a와 b가 합쳐진 문자열이 str_cat에 저장되게 됩니다.

그 다음, atoi 함수를 사용하여 str_cat를 정수형으로 변환하여 num_cat 변수에 저장합니다. num_cat 변수는 a와 b를 붙여서 쓴 값과 같습니다.

그리고, num_times 변수에는 2 a b의 결과를 저장합니다.

마지막으로, if 문을 사용하여 num_cat와 num_times를 비교하여 더 큰 값을 반환합니다. 만약 num_cat가 num_times보다 크다면 num_cat를 반환하고, 그렇지 않다면 num_times를 반환합니다.

문제 출처

코딩테스트

profile
Hello. I am a developer who is still developing.

0개의 댓글