본문 바로가기
코딩테스트/C++

[C++/프로그래머스]두 수의 연산값 비교하기

by wyatti 2023. 5. 23.

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

12 ⊕ 3 = 123

3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
C++ 코딩테스트 두 수의 연산값 비교하기

문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

12 ⊕ 3 = 123

3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.

 

 

 

제한사항

1 ≤ a, b < 10,000

 

 

 

입출력 예

a b result
2 91 364
91 2 912

 

 

 

입출력 예 설명

입출력 예 #1

a ⊕ b = 291 이고, 2 * a * b = 364 입니다. 둘 중 더 큰 값은 364 이므로 364를 return 합니다.

 

입출력 예 #2

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

 

 

 

C++ 코딩테스트 두 수의 연산값 비교하기

#include <string>
#include <vector>

using namespace std;

int concatenate(int a, int b) {
    int temp = b;
    while (temp > 0) {
        a *= 10;
        temp /= 10;
    }
    return a + b;
}

int solution(int a, int b) {
    int answer = 0;
    int result1 = concatenate(a, b);
    int result2 = 2 * a * b;
    
    if (result1 >= result2)
    {
        answer = result1;
    }
    else{
        answer = result2;
    }
    return answer;
}

위의 코드에서 concatenate 함수는 두 정수를 연결하여 새로운 값을 생성하는 함수입니다. 먼저 temp 변수에 두 번째 정수 b를 저장하고, temp가 0보다 큰 동안 a를 10씩 곱해주고 temp를 10으로 나누어줍니다. 이렇게 하면 a와 b가 붙어서 새로운 값을 생성할 수 있습니다.

solution 함수에서는 먼저 concatenate 함수를 사용하여 a ⊕ b 값을 계산한 후, 2 * a * b 값을 계산합니다. 그리고 두 값을 비교하여 큰 값을 반환합니다. 만약 두 값이 같다면 a ⊕ b 값을 반환합니다.

위의 코드에서 a와 b에 각각 12와 3을 대입하면, a ⊕ b 값은 123이 되고, 2 * a * b 값은 72가 됩니다. 따라서 a ⊕ b 값인 123이 2 * a * b 값인 72보다 크므로, solution 함수는 123을 반환합니다.

 

 

 

 

 

댓글