
일전에 한번 풀어 봤었는데 다시 풀어본 코드랑 비교 좀 해보는 시간을 가졌다.
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
String sol = Long.toString(n); // 변수선언 long n 값을 String으로 호출할때
Long[] arr = new Long[sol.length()]; // 빈 Integer Arr 생성 -> 역정렬시 long type arr를 쓸 수 없어서.
for(int i = 0; i < sol.length();i++) arr[i] = (long) (sol.charAt(i) - '0'); // long type Arr 인덱스에 value값 지정
Arrays.sort(arr,Collections.reverseOrder());
Long num = 0L;
for(Long digit: arr) { num *= 10; num += digit; }
return num;
}
}
String arr로 변환 한 후 charAt으로 추출해서
Long arr에 집어넣고 Collections로 역정렬한뒤
자리값에 넣어 주는데 Long arr의 요소들을 가져와서 자리값을 곱하고 더하는 식으로
Long 값으로 만들었다.
그렇게 복잡한 과정은 아닌데 다시 풀어보니까 다른 방법이 나와서 정리해본다.
import java.util.Arrays;
class Solution {
public long solution(long n) {
String str = n+""; //String으로 변환
String[] arr = str.split(""); // String arr로 변환
String str1 = ""; // 빈 String
Arrays.sort(arr); // String arr 정렬
for(int i = 0; i < arr.length;i++){
str1 += arr[arr.length-1-i]; // 역으로 정렬시켜서 str1에 넣어주기.
}
long answer = Long.parseLong(str1); // str1을 Long값으로 변환.
return answer;
}
}
주어진 n값을 String arr로 변환 후 먼저 Arrays.sort로 정렬 후에
for구문으로 역정렬 된 String을 만든다.
그리고 그 값을 parseLong으로 변환시켜주면 끝.
기본 함수들만 사용해도 좀 더 간단하게 해결 가능했던 문제였다.
끝.
'배운 거 > Algorithm' 카테고리의 다른 글
| [Lv2. 해시 ] 폰켓몬 (0) | 2022.08.02 |
|---|---|
| [lv2. 연습문제] 최댓값과 최소값 (0) | 2022.08.02 |
| [연습문제]핸드폰 번호 가리기 (0) | 2022.08.01 |
| [연습문제]행렬의 덧셈 (0) | 2022.07.31 |
| [연습문제]별찍기 (0) | 2022.07.30 |