본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 정수 내림차순으로 배치하기

by 주남2 2019. 4. 11.
반응형

문제 설명

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

 

제한 조건

  • n은 1이상 8000000000 이하인 자연수입니다.

생각

각 자리수를 내림차순으로 배치하려면 split이 필요하다. 하지만 숫자를 split() 함수를 쓸 수는 없으므로, String형으로 먼저 바꿔줘야한다! 어디선가 꿀팁을 배웠는데, 만약 int n = 3이 있으면 String n_toString = "" + n 으로 하면 순식간에 String형으로 바뀐다!!

 

String으로 바꾼 후, 각 자릿수를 분리하고 정렬을 해준다. 후에 for문으로 10의 거듭제곱형태로 곱해가며 원래 수를 만들며 된다! 여기서 주의할 점은 n은 8000000000 (80억) 이하이다. 이러면 answer의 데이터 타입도 long으로 해야하는 것을 주의해야 한다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
 
class Solution {
      public long solution(long n) {
          long answer = 0;
          
          String a = "" + n;
          String[] a1 = new String[a.length()+1];
          a1 = a.split("");
          Arrays.sort(a1);
          
          for(int i=0; i<a1.length; i++) {
              answer += Integer.parseInt(a1[i]) * Math.pow(10, i);
          }
          
          return answer;
      }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

시험기간이다... 1일 1포스팅을 목표로 했고, 아직 풀어둔 문제가 남아 글을 더 쓰고 싶지만 프로젝트와 시험공부로 인해 당분간은 매일 글을 쓰지는 못할 것 같다.. ㅠㅠㅠㅠㅠㅠ 2일 1포스팅이라도 노력해야면서 써야겠다.

반응형