개발일기

정수 내리차순으로 배치하기 본문

Algorithm

정수 내리차순으로 배치하기

한둥둥 2023. 12. 23. 23:57
  • 정수 내림차순으로 배치하기
문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한 조건
  • n은 1이상 8000000000 이하인 자연수입니다.
입출력 예nreturn
118372 873211

 

1. 정수 n을 받아 10자리수 단위로 배열에 넣어주어야함 

2. 배열에 넣어준 값을 큰숫자부터 앞으로 나오도록 해주어야 한다.

3. 이렇게 해준 값을 합쳐주어 Long타입으로 만들어 반환해주어야함. 

 

import java.util.*;
class Solution {
    public long solution(long n) {
        long answer = 0;
        String []arr = Long.toString(n).split("");
        
        Arrays.sort(arr, Collections.reverseOrder());
        String number="";
        for(String a: arr){
            number += a;
        }
        answer = Long.parseLong(number);
        return answer;
    }
}

 

내가 푼 풀이는 이와 같다.

1.  우선 Long으로 들어오는 n을 String으로 나누어주어 split 메서드를 통하여 arr배열에 담아주었다. => 10단위 숫자로 나눔

 

2. Array.sort()함수는 정렬을 해주는데, default는 작은 숫자부터 큰숫자까지 오름차순 정렬이며 Collection.reverseOreder() 또는 Comparator.reverseOrder()둘다 내림차순 정렬이다. => 큰숫자부터 앞으로

 

3. for each문을 통해서 합해줌 

4. Long.parseLong으로 String타입을 형변환해주었다.

 

 

인상 깊었던 풀이 

public Solution {
	public long solution(long n) {
    	return Long.parseLong(String.valueOf(n).chars().mapToObj(ch -> (char) ch)
        		.sorted(Comparator.reverseOrder())
                .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
                .toString());
    }
}

 

가장 적은 줄로.. 풀수 있던게 신기하여 작성하였고 collect를 이런식으로도 사용할 수 있는지 알게 되었다.

'Algorithm' 카테고리의 다른 글

콜라츠 추측(프로그래머스)  (1) 2024.02.19
프로그래머스 숫자 짝꿍  (1) 2023.12.26
정수 제곱근 판별  (4) 2023.12.23
문자열 내 p와 y의 개수  (1) 2023.12.17
나머지가 1이 되는 수 찾기  (0) 2023.12.17