프로그래머스 기초

[프로그래머스 기초] Java Lv.0 더 크게 합치기

kimbh 2024. 11. 24. 20:43

문제 설명

연산 ⊕ 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 3 = 1234
  • 3   12 = 312

양의 정수 a와 b가 주어졌을 때, a b와 b a중 더 큰 값을 return 하는 soultion함수를 완성해주세요.

단, a b와 b a가 같다면 a b를 return 합니다.


(문제 풀이)

해당 문제에서 예시로 a = 12, b 3이라고 가정했을때 

12 3 = 123입니다. 이게 정수형으로 값을 처리하게 될 경우 15라는 값이 나오지만 123이라는 값을 출력하기 위해서는

문자열 더하기를 이용해서 풀여야 겠다고 생각했습니다.

하지만 두 개의 매개변수 데이터 타입은  int형 이기 때문에 Integer 랩퍼 클래스 메서드인 toString(a)와 toString(b)를 합한 결과가 문자열 123의 값입니다. 만약 이대로 값을 넣게 되면 if문을 돌렸을 때 ba나 ab가 둘 다 문자열 이기때문에 연산자를 통해서 조건문을 통과할 수 없게 됩니다. 그리고 ba와 ab를 선언한 데이터 타입은 둘 다 Int여서 문자열 값을 담을 수 없게됩니다. 그렇게 된다면 문자열 -> 정수형으로 바꿔주는 메서드를 이용해야 하는데 그게 바로 parseInt메서드입니다.(Integer 랩퍼 클래스안에 있는 메서드임.)

이 메서드를 이용해서 문자열 -> 정수형으로 저장할 수 있게 되고 또 ba값은 321/ ab값은 123으로 정수형으로 저장되기 때문에 조건문에서도 123 > 321 이런식으로 연산하게 됩니다. 123 > 321 조건은 틀렸기 떄문에 answer 변수에 ba에 값이 저장이 되고 return 할 때 321의 값으로 리턴이 됩니다.


(코드)

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        int ab = Integer.parseInt(Integer.toString(a)+Integer.toString(b));
        int ba = Integer.parseInt(Integer.toString(b)+Integer.toString(a));
        if( ab > ba){
            answer = ab;
        }else{
            answer = ba;
        }
        return answer;
    }
}

(출력)


(결론)

이번 문제는 랩퍼클래스안에 있는 메서드를 통해서 문제를 풀어야 했기 때문에 만약 메서드를 잘 몰랐으면 풀기 어려웠던 문제였습니다.

다른 사람들의 풀이를 봤을 때도 저처럼 똑같이 랩퍼클래스 안에 있는 메서드를 통해서 풀이를 한것을 봤는데 제가 풀었던 것과 다른점은 if문을 사용하지 않고 삼항 연산자로 바로 return 하는 식의 풀이도 봤습니다. 

이번을 계기로 어떤 메서드들이 있는지 잘 살펴보게 되었습니다.