[Programmers] #181938 - 두 수의 연산값 비교하기 [Java][C++][Python]
두 정수를 이어붙인 값과 곱의 두 배를 비교해 더 큰 값을 반환하는 워밍업 문제.
[Programmers] #181938 - 두 수의 연산값 비교하기 [Java][C++][Python]
1. 아이디어
a와 b는 모두 $1 \le a, b < 10000$을 만족하는 양의 정수로 주어지므로, 두 수를 이어붙인 값 x(예: a=2, b=91이면 x=291)와 $2ab$로 계산한 값 y를 각각 구해 더 큰 쪽을 반환하면 되는 문제다. x는 두 정수를 문자열로 이어붙인 뒤 다시 정수로 변환해서 구한다. 문제에서는 x와 y가 같을 때 x(이어붙인 값)를 반환하라고 명시하지만, 이 경우 x와 y가 같으므로 max(x, y)를 그대로 써도 조건을 만족한다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(1)$ | $O(1)$ |
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
class Solution {
public int solution(int a, int b) {
int x = Integer.parseInt("" + a + b);
int y = 2 * a * b;
return Math.max(x, y);
}
}
1
2
3
4
5
6
7
8
#include <bits/stdc++.h>
using namespace std;
int solution(int a, int b) {
int x = stoi(to_string(a) + to_string(b));
int y = 2 * a * b;
return max(x, y);
}
1
2
3
4
def solution(a, b):
x = int(f"{a}{b}")
y = 2 * a * b
return max(x, y)
This post is licensed under CC BY 4.0 by the author.