Language/JAVA

[JAVA] 프로그래머스 LV.0 더크게 합치기 풀이 - 형변환 이렇게 하세요

이오와이 2023. 8. 10. 10:41

 

프로그래머스 코딩 기초트레이닝(LV.0)을 순서대로 풀고 있습니다.

 

쉽다고 넘어가면 안 될게, 중간중간 생각지도 못했다거나

다른 사람들의 더 쉽고 간단한 풀이를 보며 놀랄 때가 많습니다.

 

아직 턱없이 부족하고, 배울 게 많다는 뜻입니다.

 

 

오늘은 더 크게 합치기 라는 문제를 풀어보았습니다.

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

 

프로그래머스

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

programmers.co.kr

 

요약하자면,

두 양의 정수 a와 b가 주어졌을 때, a⊕b와 b⊕a 중 더 큰 값을 출력해야 합니다.

이때, a = 12, b = 3일 때,

123이 아닌, 312를 출력해야 합니다.

 

 

더 크게 합치기

두 정수니까 a와 b는 int입니다.

그러니까, 정수인 채로 값을 비교한다면 답이 15로 출력됩니다.

문제가 의도하는 것은 정수를 어떻게 비교해서 출력하느냐입니다.

정수 -> 문자열 -> 정수 순으로 바꾸며 비교해야 합니다.

 

풀이 먼저 보여드리겠습니다.

int answer = 0;

String ab = String.valueOf(a) + String.valueOf(b);
String ba = String.valueOf(b) + String.valueOf(a);  

if(Integer.parseInt(ab) > Integer.parseInt(ba)) {
    answer += Integer.parseInt(ab);
} else {
    answer += Integer.parseInt(ba);
}

return answer;

두 정수의 순서가 ab와 ba일 때를 문자열로 정의했습니다.

이때, String.valueOf(정수)를 사용하여 '정수 -> 문자열'로 변환합니다.

 

문자열로 바꾼 ab와 ba는 다시 숫자로 바꿔줍니다.

문자열로 바꿨다가 다시 숫자로 바꾸는 이유는 위에도 말씀드렸지만

정수로 계산했다가는 예) 12+3 = 15가 되기 때문에 전혀 다른 값이 나옵니다.

문자열로 바꿔서 예) 12+3=123이 되도록 하기 위함입니다.

이때는 Integer.parseInt(문자열)을 사용하여 '문자열->정수'로 변환합니다.

문자열이 모두 숫자일 경우에만 가능합니다.

 

각 상황에 맞춰 answer에 ab 혹은 ba값을 넣어줍니다.

여전히 Integer.parseInt(문자열)을 사용하는 이유는 여전히 ab혹은 ba가 문자열이기 때문입니다.

 

 

형변환에 조금 더 익숙해져야겠다는 생각이 들었습니다.

꾸준히 풀다 보면 문제를 이해하며 해결하는 능력도 생기리라 믿습니다.