문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
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을 반환합니다.
댓글