-
코딩테스트 연습 / 연습문제 / 정수 내림차순으로 배치하기알고리즘/프로그래머스 2020. 4. 14. 17:26
문제 설명
함수 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; Integer[] arr = new Integer[(int) Math.ceil(Math.log10(n))]; for(int i=0; i<arr.length; i++) { arr[i] = (int)(n % 10); n/=10; } Arrays.sort(arr, Collections.reverseOrder()); StringBuilder sb = new StringBuilder(); for(int i=0; i<arr.length; i++) { sb.append(arr[i]); } answer = Long.parseLong(new String(sb)); return answer; } }
풀이 설명
문제보자마자 long타입의 숫자를 10자리 이하로 다 뜯어내서 배열에 집어넣고 역순 정렬한뒤 다시 붙여야겠다는 생각을 했다.
다른 사람의 풀이
public class ReverseInt { String res = ""; public int reverseInt(int n){ res = ""; Long.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)); } }
자바 8의 특성인 stream을 이용한 것으로 보이는데 공부를 좀 더 해봐야 할것 같다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
코딩테스트 연습 / 연습문제 / 제일 작은 수 제거하기 (0) 2020.04.14 코딩테스트 연습 / 연습문제 / 정수 제곱근 판별 (1) 2020.04.14 코딩테스트 연습 / 연습문제 / 자릿수 더하기 (0) 2020.04.13 코딩테스트 연습 / 연습문제 / 이상한 문자 만들기 (0) 2020.04.13 코딩테스트 연습 / 연습문제 / 소수 찾기 / JAVA (1) 2020.04.10