프로그래머스 코딩 기초트레이닝(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가 문자열이기 때문입니다.
형변환에 조금 더 익숙해져야겠다는 생각이 들었습니다.
꾸준히 풀다 보면 문제를 이해하며 해결하는 능력도 생기리라 믿습니다.
'Language > JAVA' 카테고리의 다른 글
[JAVA] Scanner vs BufferedReader : 입출력 처리 방법 비교하기 (0) | 2023.08.29 |
---|---|
[JAVA] join() 메소드로 배열 속 문자들 합치기 (0) | 2023.08.09 |
[JAVA] charAt 메소드로 문자열에서 문자 하나 출력하기 (0) | 2023.08.08 |
[JAVA] 홀/짝 구분하고, 홀/짝의 합 구하기 (+ 프로그래머스 LV.0 홀짝에 따라 다른 값 반환하기) (0) | 2023.08.07 |
[JAVA] trim() 메서드로 공백 제거하기 (0) | 2023.08.07 |