728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 3 - (4)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181939
문제 | 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
- 12 ⊕ 3 = 123
- 3 ⊕ 12 = 312
입력 #1 | a = 9, b = 91
출력 #1 | 991
>> 풀이 <<
정수 a,b를 문자열로 바꾸어 ab, ba 를 만든 후, 이를 정수형으로 변환해 크기를 비교해 문제를 풀려고 한다. 자바에서는 String이 객체이기 때문에 문자열을 정수형으로 바꾸거나 정수형을 문자열 형태로 바꿀 때 별도의 메소드를 이용해야 한다.
- int를 String으로 -> String.valueOf() / Integer.toString()
- String String.valueOf(int a) 는 a 값을 문자열로 바꾸어준다.
- String Integer.toString(int a) 도 마찬가지로 a 값을 문자열로 바꾸어준다.
- String을 int로 -> Integer.valueOf() / Integer.parseInt()
- Integer Integer.valueOf(String s) 는 문자열 s를 정수형으로 바꾸어준다. 출력값이 Integer 형태이지만 기본타입인 int로 바꾸고 싶으면 별도의 과정 없이 Integer a = 1; int b = a; 이런식으로 처리할 수 있다. 이렇게 Wrapper 객체에 들어있는 기본타입 값을 빼내는 것을 언박싱(unboxing)이라고 한다.
- Integer Integer.parseInt(String s) 도 마찬가지로 문자열 s를 정수형으로 바꾸어준다.
=> 즉, valueOf() 메소드는 Wrapper 클래스 객체를 생성해주는 역할을 한다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
String num1 = String.valueOf(a) + String.valueOf(b);
String num2 = String.valueOf(b) + String.valueOf(a);
if (Integer.valueOf(num1) >= Integer.valueOf(num2)) return Integer.valueOf(num1);
return Integer.valueOf(num2);
}
}
위 메소드들을 이용해 코드를 작성했는데 일정 메소드가 너무 많이 반복되는 것 같아 불편했다. 그래서 다른 방법도 찾아보았다!
자바의 특성상 정수 + 문자열을 연결하면 결과물은 문자열이 된다는 점을 이용하여 int를 String으로 바꾸는 과정을 아래와 같이 처리할 수 있다.
int sol1 = Integer.parseInt(""+a+b);
int sol2 = Integer.parseInt(""+b+a);
그래서 전체 코드를 아래처럼 작성했다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
int sol1 = Integer.parseInt(""+a+b);
int sol2 = Integer.parseInt(""+b+a);
if (sol1 >= sol2) return sol1;
return sol2;
}
}
여기서 if문 부분은 삼항연산자를 이용해도 좋을 거 같다!
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 코드 처리하기 - JAVA (0) | 2023.07.04 |
---|---|
[프로그래머스] 조건문자열 - JAVA (0) | 2023.07.03 |
[프로그래머스] 문자열 곱하기 - JAVA (0) | 2023.07.02 |
[프로그래머스] 문자 리스트를 문자열로 변환하기 - JAVA (0) | 2023.07.02 |
[프로그래머스] 문자열 겹쳐쓰기 - JAVA (0) | 2023.07.02 |