level 0
[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/181939
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[첫번째 풀이]
class Solution {
public int solution(int a, int b) {
String a1 = String.valueOf(a);
String b1 = String.valueOf(b);
String ab = a1.concat(b1);
String ba = b1.concat(a1);
return Math.max(Integer.valueOf(ab), Integer.valueOf(ba));
}
}
문자열 a + b , b + a 를 만들기 위해 int 를 String 으로 변환 후, 합쳐주었다.
그리고 더 큰 숫자를 비교하기 위해 다시 숫자형으로 변환해준다.
Math.max를 사용하여 두개의 값 중 더 큰 값을 가져오도록 했다.
[두번째 풀이]
class Solution {
public int solution(int a, int b) {
int ab = Integer.parseInt(a+""+b);
int ba = Integer.parseInt(b+""+a);
return Math.max(ab, ba);
}
}
Integer.parseInt(a + "" + b); 를 사용하여 a와 b를 문자열로 합치고 int로 변환해주는 방법도 있다.
위의 코드를 사용하면 훨씬 간단하게 작성할 수 있다.
이런 문제에서 주의할 점은, 숫자를 문자열로 합치는 것이므로 합쳤을 때 int 의 최대값을 넘는지 확인해야 한다.
int의 MAX_VALUE는 2,147,483,647 (약 21억) 이므로 이 값이 넘어가는지 유의해야 한다.
넘어가는 경우엔 long 타입을 사용하면 된다.
이번 문제에서는 a 와 b 의 최대값이 10,000 이므로 문자열 a + b 의 최대값은 1,000,010,000 이기 때문에 문제없다!
반응형
'IT > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 특정한 문자를 대문자로 바꾸기 - java (0) | 2025.03.16 |
---|---|
[프로그래머스] 수열과 구간 쿼리 3 - java (0) | 2025.03.16 |
[프로그래머스] 문자열 곱하기 - java (0) | 2025.03.13 |
[프로그래머스] 배열 만들기 2 - java (1) | 2025.03.12 |
[프로그래머스] 대소문자 바꿔서 출력하기 - java (1) | 2025.03.12 |