연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
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 ab = String.valueOf(a) + String.valueOf(b);
String ba = String.valueOf(b) + String.valueOf(a);
int c = Integer.parseInt(ab);
int d = Integer.parseInt(ba);
if (c >= d) {
return c;
} else {
return d;
}
}
}
작성하고 난 다음엔 깔끔하다고 생각했는데 다른 사람들 코드를 보니까 길고 장황하다고 느껴졌다.
java.lang.String
클래스의 valueOf()
메소드를 이용한다.
나는 String.valueOf()
를 사용했다.
int 값을 입력받고 변환한 String 을 반환한다.
java.lang.Integer
클래스의 toString()
메소드를 이용할 수도 있다.
int a = 1;
int b = 2;
String ab = Integer.toString(a) + Integer.toString(b);
String ba = Integer.toString(b) + Integer.toString(a);
System.out.println(ab); // 12
System.out.println(ba); // 21
다른 사람들의 코드를 구경해보다가 엄청 간단한 방법을 발견했다.
int 숫자에 ""을 더하면 String 이 된다.
이유는 문자열에 int를 이어붙이면 문자열로 반환되기 때문이다.
int + ""
class Solution {
public int solution(int a, int b) {
int answer = 0;
int ab = Integer.parseInt(a + "" + b);
int ba = Integer.parseInt(b + "" + a);
...
}
}
이렇게 코드를 줄일 수도 있다.
java.lang.Integer
클래스의 parseInt()
메소드이다.
String 값을 입력받고 변환한 int 을 반환한다.
나는 이것을 사용했다.
java.lang.Integer
클래스의 Integer.valueOf()
메소드이다.
둘의 차이점은 추후에 기술하도록 하겠다.
if 를 사용한 조건문도
answer = c >= d ? c : d;
return answer;
으로 간단하게 대체할 수 있다.
(조건 A) ? B : C;
연산자를 세 개 가지기 때문에 삼항 연산자이다.
A는 조건이며 true 또는 false라는 값을 가진다. true 이면 B를 false 이면 C를 실행한다.
삼항연산자는 위처럼 true 또는 false로 나뉠 때, if 문 보다 더 짧게 쓸 수 있다.
아직은 if 문이 보기 편하고 가독성이 좋다고 느끼는데, 배우고 있는 중이라 그렇게 여기는 건지 아니면 다른 사람들도 그렇게 생각하는지 궁금하다.
※ 삼항 연산자를 사용하여 코드를 줄였다고 해서 컴파일 속도가 빨라지지는 않는다.