반응형
문제:
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건 : n은 1이상 8000000000 이하인 자연수입니다.
해답코드
class Solution {
public long solution(long n) {
long answer = 0;
int length = (int)(Math.log10(n) + 1);
long[] arr = new long[length];
for(int i = 0; i < length ; i++){
arr[i] = n%10;
n /= 10;
}
for(int i = 0; i < arr.length ; i++)
for(int k= i+1; k<arr.length ; k++){
if(arr[i]<arr[k]){
long tempt = 0;
tempt = arr[i];
arr[i] = arr[k];
arr[k] = tempt;
}
}
long ten = 1;
for(int j = length-1; j>=0 ; j--){
answer += arr[j] *ten;
ten *=10;
}
return answer;
}
}
코드해설:
- answer: 원래 자연수를 각 자리 수가 큰 순서대로 재배열 한 것
- length: 입력받은 자연수의 자릿수
- 배열 arr에 각 자리수를 따로따로 요소로 저장하고 이의 크기를 tempt를 사용하여 비교한후
- 크기가 큰 수를 앞으로 빼는 방식을 사용한다.
- 이렇게 정렬한 배열의 요소에 다시 10,100,100 등을 곱해서 answer에 더해준다.
반응형
'Java' 카테고리의 다른 글
백준: 10952번 자바(Java) 소스코드 (0) | 2019.09.04 |
---|---|
백준: 10817번 자바(Java) 소스코드 (0) | 2019.09.04 |
백준: 10171번 자바(Java) 소스코드 (0) | 2019.09.04 |
백준: 2739번 자바(Java) 소스코드 (0) | 2019.09.04 |
프로그래머스 1단계 해설: 자연수의 각 자리수의 합 구하기 (0) | 2019.07.23 |