문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
- 12 ⊕ 3 = 123
- 3 ⊕ 12 = 312
양의 정수 a
와 b
가 주어졌을 때, a
⊕ b
와 2 \* a \* b
중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a
⊕ b
와 2 \* a \* b
가 같으면 a
⊕ b
를 return 합니다.
제한사항
1 ≤ a
, b
< 10,000
입출력 예
a | b | result |
---|---|---|
2 | 91 | 364 |
91 | 2 | 912 |
입출력 예 설명
입출력 예 #"1"
- a
⊕ b
= 291 이고, 2 \* a \* b
= 364 입니다. 둘 중 더 큰 값은 364 이므로 364를 return 합니다.
입출력 예 #2
- a
⊕ b
= 912 이고, 2 \* a \* b
= 364 입니다. 둘 중 더 큰 값은 912 이므로 912를 return 합니다.
이 문제를 처음 접근할 때에는 if-else
문을 사용해야겠다 생각했다.
그래서 다음과 같이 작성하였다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
String aString = Integer.toString(a);
String bString = Integer.toString(b);
String abString = aString + bString;
if (Integer.parseInt(abString) > (2 * a * b)) {
answer = Integer.parseInt(abString);
return answer;
} else if (Integer.parseInt(abString) < (2 * a * b)) {
answer = 2 * a * b;
return answer;
} else if (Integer.parseInt(bString) == (2 * a * b)) {
answer = Integer.parseInt(abString);
return answer;
}
return answer;
}
}
a
와 b
를 각각 String
으로 변환하였다. 그리고 단순하게 두 String
을 합친 abString
을 만들었다.
또한 if-else
문을 사용해서 조건을 달았다.
그럼 더 단순하게 작성한 코드를 살펴보자.
class Solution {
public int solution(int a, int b) {
return Math.max(Integer.parseInt(String.valueOf(a)+String.valueOf(b)),2*a*b);
}
}
String.valueOf(a)
와 String.valueOf(b)
는 각각 정수 a와 b를 문자열로 변환하는 역할을 한다.
그리고 중요한 Math.max()
은 두 수 중 큰 값을 반환하는 역할을 한다.
나는 코드를 여러 줄로 작성하였지만 다른 사람들은 한 줄로 끝냈다...
확실히 자바의 내부 메서드를 잘 알고 작성하면 더 쉽게 접근할 수 있는 것 같다.
'problem solving' 카테고리의 다른 글
[프로그래머스] 문자열 내 p와 y의 개수 (0) | 2024.11.29 |
---|---|
[프로그래머스] 대문자와 소문자 (0) | 2024.11.28 |
[프로그래머스] 가위 바위 보 (0) | 2024.11.26 |
[프로그래머스] 배열 비교하기 (0) | 2024.11.26 |
[프로그래머스] 뒤에서 5등까지 (0) | 2024.11.21 |