1. 해결 전략
- 먼저 정수
String.valueOf()
를 사용하여 a
와 b
를 문자열로 형변환을 하여 a+b
, b+a
연산합니다.
- 연산 시 변수
a
에만 String.valueOf(a)
를 사용하여도 문자열 + 정수는 문자열로 형변환이 일어나므로 문제없습니다.
Integer.parseInt()
를 사용하여 연산 결과를 비교하여 원하는 결과값을 반환합니다.
2. 구현코드
✅ Integer.parseInt()
✅ String.valueOf()
class Solution {
public int solution(int a, int b) {
int case1 = Integer.parseInt(String.valueOf(a) + String.valueOf(b));
int case2 = Integer.parseInt(String.valueOf(b) + String.valueOf(a));
return case1 > case2 ? case1 : case2;
}
}
3. 시간 & 공간 복잡도
- 시간 복잡도: O(1)
- 공간 복잡도: O(1)
4. Refatoring
✅ Math.max()
✅ Integer.parseInt("" + a)
class Solution {
public int solution(int a, int b) {
return Math.max(Integer.parseInt("" + a + b), Integer.parseInt("" + b + a));
}
}
- 이전에는
String.valueOf(a)
를 사용하여 문자열로 형변환을 하였는데 메소드 사용없이 위와 같이 사용하면 자동 형변환이 되고 가독성을 높일 수 있는 것 같습니다.
- 이전 코드에서는 삼항연산자를 사용하여 비교를 하였지만
Math.max()
를 사용하여 간결하게 코드를 작성할 수 있었습니다.
5. 후기 및 반성
- 아무리 간단한 문제라도 어떻게 생각하고 어떻게 접근하느냐에 따라 코드의 효율성과 가독성, 성능이 달라지는 것을 체감하고 있습니다.
- 계속해서 코드리뷰를 하면서 코드를 분석해서보 공부해가는 과정이 점점 즐겁습니다.😊