성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 정수형 문자열로 변환 (int to String, String to int) - JAVA

와나나나 2023. 7. 3. 00:28
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 3 - (4)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 |  연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 양의 정수 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문 부분은 삼항연산자를 이용해도 좋을 거 같다!