티스토리 뷰
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
내코드
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
long answer = 0;
String s;
String s2 = "";
// long to String
s = String.valueOf(n);
// char to int and put it into long[]
Integer[] arrInt = new Integer[s.length()];
for (int i = 0; i < arrInt.length; i++) {
arrInt[i] = Character.getNumericValue(s.charAt(i));
}
// descent long[]
Arrays.sort(arrInt, Collections.reverseOrder());
// int to String and connect each chars
for (int i = 0; i < arrInt.length; i++) {
s2 = s2 + String.valueOf(arrInt[i]);
}
// String to long
return answer = Long.parseLong(s2);
}
}
Best Answer
- 다른 자료형을 String으로 만드는 ""를 적극적으로 활용함.
- Array.sort를 통해 오름차순으로 정렬한 배열값을 for문을 통해 뒤에서부터 하나씩 연결하여, 최종적으로 내림차순으로 만들어줌.
import java.io.*;
import java.util.*;
class Solution {
public static long solution(long n) {
String answer = "";
char[] tmp = (n+"").toCharArray();
Arrays.sort(tmp);
for(int i=tmp.length-1; i>=0; i--)
answer += tmp[i]+"";
return Long.parseLong(answer);
}
}
- 사용된 개념 및 더 알아 보기
* long to String
- > String str = String.valueOf(n) / n을 String으로 바꿈
* String의 index요소를 char형으로 변환
- > charAt(index) : 문자열의 index에 해당하는 문자를 return.
* char to int
-> Character.getNumericValue(char) : char의 숫자를 아스키코드 값이 아닌 그대로 int형으로 변환
* 배열 내림차순 정렬
-> Arrays.sort(num2, Collections.reverseOrder()); : num2 배열을 내림차순으로 정렬함. 단 num2의 데이터 타입은 객체여야 함. (다른 방식도 구현해보고 왜 객체여야 하는지 알아보기)
* String to long
- > Long.parseLong()
'Algorithm > Algorithm Practice' 카테고리의 다른 글
프로그래머스 -7 완주하지 못한 선수 (Java) (0) | 2020.03.27 |
---|---|
BST (0) | 2020.03.08 |
프로그래머스 -5 모의고사(Java) (0) | 2020.02.28 |
8. Recursion -3 (Java) (0) | 2020.02.28 |
7. Recursion -2 (Java) (0) | 2020.02.27 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- 20200622
- 20200417
- 20200406
- 20200428
- 20200427
- 20201204
- 백준
- 20200624
- chapter7
- 20200413
- 20200503
- 20200420
- 20200510
- 20200502
- 20200421
- 20200415
- 20200317
- 20200429
- 20200403
- 20200330
- likelion
- 생활코딩리눅스
- chapter8
- 20200512
- 20200425
- 20200319
- 20200424
- 20200804
- 20200423
- 20200504
- Total
- Today
- Yesterday