본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 정수 내림차순으로 배치하기 (level 1)

by HBGB 2019. 11. 7.

https://programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기 | 프로그래머스

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

programmers.co.kr

 

방법 1 : char[] -> long합산

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;
 
class Solution {
      public long solution(long n) {
          
          // long -> String -> char배열
          char[] arrChar = (n+"").toCharArray();
          
          // 정렬
          Arrays.sort(arrChar);
          
          // 합산
          long answer = 0;
          for (int i = 0; i < arrChar.length; i++) {
              answer += (arrChar[i] - '0'* Math.pow(10, i);
          }
          
          return answer;
      }
}
Colored by Color Scripter

 

방법 2 : long -> String -> long

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
 
class Solution {
      public long solution(long n) {
          
          char[] arrChar = (n+"").toCharArray();
          
          Arrays.sort(arrChar);
          
          StringBuilder sb = new StringBuilder(new String(arrChar));
          
          sb.reverse();
          
          return Long.parseLong(sb.toString());
      }
}
Colored by Color Scripter

 

속도 차이는 없다. 

문자열 내림차순 배치 문제를 재활용 한 것이다.

댓글