문제:
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
public int solution(int a, int b) {
String ab = String.valueOf(a) + String.valueOf(b);
String ba = String.valueOf(b) + String.valueOf(a);
int abInt = Integer.parseInt(ab);
int baInt = Integer.parseInt(ba);
return Math.max(abInt, baInt);
}
형변환만 하면 되는 문제 이긴 하는데, 나는 두 번이나 형변환을 해서 코드가 길다.
public int solution(int a, int b) {
return Math.max(Integer.parseInt(a + "" + b), Integer.parseInt(b + "" + a));
}
다른 문제 풀이를 보니 이렇게 한줄로 처리한 사람이 있었다.
문자열 + 숫자 = 문자열인것을 당연히 알고는 있었지만, ""로 처리할 생각은 꿈에도 하지 못했다.
이렇게 하니 형변환을 한번만 해도 되고 깔끔하게 한 줄로 처리했다.
본받아야 할 코드이다.
'코딩테스트' 카테고리의 다른 글
대소문자 구분하지 않고 문자열 포함여부 확인 (0) | 2025.05.28 |
---|---|
Stream, Set (0) | 2025.05.27 |
문자열 섞기 (0) | 2025.05.16 |
문자 배열화 하기 (0) | 2025.05.14 |
String은 불변(immutable)객체이고, StringBuilder는 가변(mutable)객체이다. (0) | 2025.05.13 |