[프로그래머스 기초] JAVA 더 크게 합치기
https://school.programmers.co.kr/learn/courses/30/lessons/181939?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
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
ex
a b result
9 91 991
89 8 898
입출력 예 설명
입출력 예 #1
a ⊕ b = 991 이고, b ⊕ a = 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.
입출력 예 #2
a ⊕ b = 898 이고, b ⊕ a = 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.
Solution
먼저 문자열끼리의 결합을 통해 두가지의 문자열을 만든다.
하지만 문자열끼리의 비교를 할 수 없기 때문에 정수로 바꾼뒤, 큰 값을 반환해야한다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
String ab = a + "" + b;
String ba = b + "" + a;
int vab = Integer.parseInt(ab);
int vba = Integer.parseInt(ba);
if( vab > vba){
return vab;
} else{
return vba;
}
}
}
다른 풀이
class Solution {
public int solution(int a, int b) {
return Math.max(Integer.parseInt(a + "" + b), Integer.parseInt(b + "" + a));
}
}
!!
다른 풀이를 보던 중 궁금한 점이 생겼다.
Integer.parseInt,와 Integer.valueof 의 차이점이다.
이번 문제에서 두 함수의 차이는 크지 않지만 앞으로의 문제 풀이에서 중요할 것이라 생각해 찾아보았다.
-> 모두 문자열을 정수로 변환해주는 메소드이지만 둘의 차이점 중 하나는 결과값의 형태이다.
Integer.parseInt()
: 결과값을 기본 자료형(Primitive Type)인 int 로 반환.
Integer.valueOf()
: 문자열의 값을 정수형으로 변환한 뒤 참조 자료형(Reference Type)인 Integer 객체로 만들어서 반환.
+++ 아쉬웠던 부분 - Math클래스의 활용