[JAVA] 정수 내림차순으로 배치하기

tnrms08·2022년 10월 7일

프로그래머스

목록 보기
21/21

문제 설명

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

제한 조건

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

입출력 예

nreturn
118372873211

풀이

코드

import java.util.*;

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        //숫자를 문자열로 변경
        String str = Long.toString(n);
        
        //동적배열(list) 선언
        ArrayList<Character> list = new ArrayList<Character>();
        //list에 문자열의 값들을 하나씩 삽입
        for(int i=0;i<str.length();i++){
            list.add(str.charAt(i));
        }
        
        //내림차순 정렬
        list.sort(Comparator.reverseOrder());
        
        //list를 다시 문자열로 변환
        String tmp = "";
        for(int i=0;i<list.size();i++){
        	//list의 값들을 하니씩 가져와서 문자열에 더하기
            tmp += list.get(i);
        }
        
        //문자열을 정수로 변환
        answer = Long.parseLong(tmp);
        return answer;
    }
}

개념

정수 -> 문자열

int n = 123456;

//1. String.ValueOf()
String str = Sring.ValueOf(n);

//2. Integer.toString()
String str = Integer.toString(n);	//정수->문자열
String str = Long.toStrign(n);		//Long -> 문자열
String str = Array.toString(n);		//배열 -> 문자열

//3. ""+숫자
String str = "" + n;

문자열 -> 배열

  1. 반복문 사용
String str = "123456"l=;

//str의 길이만큼 배열 생성
char[] arr = new char[str.length()];

//한글자씩 배열에 삽입
for (int i = 0; i < str.length(); i++) {
 	arr[i] = str.charAt(i); 
 }
  1. toCharArray 메소드 사용
String str = "123456";

//문자열 -> 배열로 변환    
char[] arr = str.toCharArray();

동적배열 정렬

https://hianna.tistory.com/569
여기가 정리가 잘 되어 있어서 참고하면 될 것 같다.

문자열 -> 정수

String str = "123456";

//문자열 -> 정수
int intValue = Integer.parseInt(str);

//문자열 -> Long
long longValue = Long.parseLong(str);

0개의 댓글