본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 정수 내림차순으로 배치하기 풀이(Java)

by wakestand 2019. 9. 4.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 정수 내림차순으로 배치하기

언어 : 자바(Java)

 

n값을 받은 뒤 이걸 숫자 크기에 따라 정렬해서 반환하라는 문제인데

숫자를 하나씩 다 쪼갠 뒤에 큰 수 순서대로 깔아서 반환해줘야 한다

 

내가 푼 방법은 아래와 같은데

 

먼저 for 문을 돌리면서

n값을 String으로 변환한 뒤 1글자씩 자른 뒤 그걸 다시 int로 변환해서 list에 넣어준다

 

이후 Collections.sort를 사용해 역순으로 정렬해주면

큰 값이 list의 앞에 들어오고 작은 값이 끝에 들어오게 되는데

 

여기서 for문을 한번 더 돌려서 list 값을 다시 String 하나에 합쳐준다

역정렬을 통해 큰 수가 앞으로 가게 될 것이다

이후 String을 다시 Long 타입으로 변환한 뒤 반환한다

 

마지막으로 프로그래머스에 바로 적용 가능한 답안은 아래와 같다

 

import java.util.ArrayList;
import java.util.Collections;

class Solution {
  public long solution(long n) {
	      long answer = 0;
	      int nLength = String.valueOf(n).length();
	      String answerString = "";
	      
	      ArrayList<Integer> list = new ArrayList<Integer>();
	      for(int i = 0; i<nLength; i++) {
	    	  list.add(Integer.parseInt(String.valueOf(n).substring(i, i+1)));
	      }
	      
	      Collections.sort(list, Collections.reverseOrder() ); // 역정렬
	      
	      for(int i = 0; i<nLength; i++) {
	    	  answerString = answerString + list.get(i); // 역정렬 시킨 값 넣어주기
	      }
	      
	      answer = Long.parseLong(answerString); // String을 Long으로 변환
	      
	      return answer;
  }
}
반응형

댓글