문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
제한 사항
1 ≤ a, b < 10,000
나의 코드
class Solution {
public int solution(int a, int b) {
int answer = 0;
String x = a+"";
String y = b+"";
String before1 = x+y;
int after1 = Integer.parseInt(before1);
String before2 = y+x;
int after2 = Integer.parseInt(before2);
if(after1>after2) {
answer += after1;
} else if (after2>after1) {
answer += after2;
} else {
answer += after1;
}
return answer;
}
}
Intger.parseInt()
함수를 통해 다시 int값으로 바꿔서 정의다른 사람 코드
class Solution {
public int solution(int a, int b) {
int answer = 0;
int aLong = Integer.parseInt(""+a+b);
int bLong = Integer.parseInt(""+b+a);
answer = aLong > bLong ? aLong : bLong;
return answer;
}
}
class Solution {
public int solution(int a, int b) {
String strA = String.valueOf(a);
String strB = String.valueOf(b);
String strSum1 = strA + strB;
String strSum2 = strB + strA;
return Math.max(Integer.valueOf(strSum1), Integer.valueOf(strSum2));
}
}
Math.max() 함수 사용
느낀 점
어떻게 코드를 짜야할 지 머릿 속으로 정리가 되었으나, 그대로 코드로 옮기다 보니 가독성이 안좋아지고 복잡한 코드처럼 보였다. 최대한 함수들을 이용하고 쉬운 작업들을 묶으면 좀 더 좋은 코드가 될 것 같다.