반응형
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다.
n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
Solution.java
import java.util.*;
class Solution {
public long solution(long n) {
String[] arr = String.valueOf(n).split("");
Arrays.sort(arr); // 오름차순 정렬
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]); // 문자 하나씩 합치기
}
return Long.parseLong(sb.reverse().toString());
}
}
이 문제를 풀기 위해서 문자열을 연결해주는 StringBuilder를 사용하였습니다.
자세한 내용은 코드를 한 줄 씩 분석하여 설명하겠습니다.
코드 해설
n이 118372 이라고 가정하고 설명하겠습니다.
- sort ( 정렬 )은 배열에서 사용가능하기에 새로운 문자열 배열 String arr를 생성합니다.
- String arr 배열에 n의 값을 하나씩 담기 위해 String.valueOf(n) 을 통해 정수를 문자열로 변환하고 split() 메서드로 "" 단위로 문자 하나씩 쪼갭니다.
=> arr : ["1", "1", "8", "3", "7", "2"] - Arrays.sort(arr) 를 통해 오름차순 정렬합니다.
=> arr : ["1", "1", "2", "3", "7", "8"] - 문자열을 더해주는 StringBuilder 사용하기 위해 StringBuilder sb = new StringBuilder() 로 객체를 선언합니다.
- arr 배열의 인덱스 0 번째 부터 마지막까지 sb.append 메서드를 통해 하나씩 합칩니다.
=> sb : 112378 - sb 변수를 reverse() 메서드로 내림차순 변경하고, toString 메서드로 문자열로 변환합니다.
=> sb : reverse() - 873211" => toString - "873211" - n이 long 형이기에 Long.parseLong로 문자열을 long형으로 변환하여 반환합니다.
=> 873211
'◼ 코딩테스트 > 구현 (Implementation)' 카테고리의 다른 글
[Java/자바] 프로그래머스 - 푸드 파이트 대회 (0) | 2022.12.01 |
---|---|
[Java/자바] 프로그래머스 - 소수 찾기 (에라토스테네스의 체) (1) | 2022.11.24 |
(Java/자바) 프로그래머스 Lv1 - 문자열 내 p와 y의 개수 (0) | 2022.10.12 |
(Java/자바) 프로그래머스 Lv1 - 하샤드 수 (0) | 2022.10.11 |
(Java/자바) 프로그래머스 Lv1 - 정수 제곱근 판별 (0) | 2022.10.11 |