📍 문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
return
118372 | 873211 |
💡 접근
처음에는 long 타입의 배열or리스트를 만들어서 처리해보려 했으나 아스키코드 숫자의 숫자가 들어가서 String으로 변환시켰다.
그러고나서 answer에 더해주는데 String 또 long 타입으로 변환시켜서 더해주다 보니 숫자로 인식해서 아예 String 변수를 하나 만들어서 완성시킨 후 answer에 넣어주는 식으로 풀었음
다른 사람은 ""을 기준으로 한 단어마다 배열을 만들어서 해당 배열을 sort 시켜주는 식으로 구현했다..
그러면 [8,7,3,2,1,1] 으로 바로 배열에 담기게 된다!
👩💻 코드
import java.util.*;
class Solution {
public static long solution(long n) {
long answer = 0;
String tmp = "";
String s = n + "";
String[] arr = new String[s.length()];
ArrayList<String> list = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
arr[i] = s.charAt(i) + "";
}
for(int i = 0; i < s.length(); i++) {
list.add(s.charAt(i) + "");
}
Arrays.sort(arr, Comparator.reverseOrder());
Collections.sort(list, Collections.reverseOrder());
for(int i = 0; i < list.size(); i++) {
tmp += list.get(i);
}
answer = Long.parseLong(tmp);
return answer;
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String[] a = {"Jane", "Kim"};
int n = 1;
solution(118372);
}
}
import java.util.*;
class Solution {
public long solution(long n) {
String[] list = String.valueOf(n).split("");
Arrays.sort(list);
StringBuilder sb = new StringBuilder();
for (String aList : list) sb.append(aList);
return Long.parseLong(sb.reverse().toString());
}
}
'Algorithm > programmers' 카테고리의 다른 글
[2018 카카오 블라인드 1차]비밀지도 (0) | 2021.12.04 |
---|---|
[2018 카카오 블라인드 1차]다트 게임 (0) | 2021.12.03 |
하샤드 수 (0) | 2021.12.03 |
제일 작은 수 제거하기 (0) | 2021.12.02 |
이상한 문자 만들기 (0) | 2021.12.02 |