Level. 1
문제
함수 solution은 정수 n을 매개변수로 입력받습니다.
n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
풀이
import java.util.*;
class Solution {
public long solution(long n) {
String str = Long.toString(n);
long answer = 0;
char[] ch = str.toCharArray();
Arrays.sort(ch);
str = new StringBuilder(new String(ch)).reverse().toString();
return Long.parseLong(str);
}
}
해결방법
1. String str = Long.toString(n) : Long타입의 n 을 String으로 변경
2. char[] ch = str.toCharArray() : str을 char 배열로 변경
3. Arrays.sort(ch) : char 배열을 오름차순 정렬
4. str = new StringBuilder(new String(ch)).reverse().toString() : char배열을 문자열로 다시 변경한 후 역순정렬
5. return Long.parseLong(str) : 문자열 str을 Long 타입으로 변경
이것저것 써 해결해 보았으나 더 복잡해진 느낌이다..
다른 풀이
public class ReverseInt {
String res = "";
public int reverseInt(int n){
res = "";
Integer.toString(n).chars().sorted().forEach(c -> res = Character.valueOf((char)c) + res);
return Integer.parseInt(res);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
ReverseInt ri = new ReverseInt();
System.out.println(ri.reverseInt(118372));
}
}
Stream을 사용한 풀이이다.
1. toString을 통해 숫자를 문자열로 변환
2. chars()를 통해 스트림으로 변환
3. sorted()를 통해 오름차순으로 정렬
4. forEach를 통해 c+res 하여 역순으로 정렬
5. 완성된 문자열은 ParseInt를 통해 Integer로 변경되었다.
https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=java
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 최대공약수와 최소공배수 (0) | 2023.07.05 |
---|---|
[프로그래머스(Java)] 콜라츠 추측 (0) | 2023.07.05 |
[프로그래머스(Java)] 하샤드 수 - Stream (0) | 2023.07.05 |
[프로그래머스(Java)] 삼총사 - DFS (0) | 2023.07.05 |
[프로그래머스(Java)] 핸드폰 번호 가리기 - toCharArray() String.valueOf() toString() , 여러 replace() (0) | 2023.07.04 |