코딩테스트/프로그래머스

[프로그래머스 기초] JAVA 더 크게 합치기

머밍 2024. 6. 29. 21:13

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클래스의 활용