Post

[Programmers] #181938 - 두 수의 연산값 비교하기 [Java][C++][Python]

두 정수를 이어붙인 값과 곱의 두 배를 비교해 더 큰 값을 반환하는 워밍업 문제.

[Programmers] #181938 - 두 수의 연산값 비교하기 [Java][C++][Python]

문제 링크


1. 아이디어

ab는 모두 $1 \le a, b < 10000$을 만족하는 양의 정수로 주어지므로, 두 수를 이어붙인 값 x(예: a=2, b=91이면 x=291)와 $2ab$로 계산한 값 y를 각각 구해 더 큰 쪽을 반환하면 되는 문제다. x는 두 정수를 문자열로 이어붙인 뒤 다시 정수로 변환해서 구한다. 문제에서는 xy가 같을 때 x(이어붙인 값)를 반환하라고 명시하지만, 이 경우 xy가 같으므로 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.