성장일기

 

1427번: 소트인사이드

첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제


배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

 

 

입력


첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

 

 

출력


첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

 

예제 입출력


예제 입력 예제 출력
2143 4321

 

풀이


 이번 문제는 하나의 수를 입력받아서 한글자 단위로 나눠서 정렬 후 출력해주면 끝난다. 풀이방법은 첫번째로 수학적원리를 이용한 방법과 두번째로 문자열을 한 문자로 나눠서 배열로 반환해주는 toCharArray()메소드를 이용한 방법으로 풀어봤다.

 

코드


1. 수학적인 원리

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		
		int[] count = new int[10];
		
		while(n!=0) {
			count[n%10] +=1;
			n /= 10;
		}

		for(int i=9; i>=0; i--) {
			for(int j = 0; j<count[i]; j++)
				System.out.print(i);
		}
		
	}
	
}

 

2. toCharArray() 메소드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main2 {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String s = br.readLine();
		
		char[] arr = s.toCharArray();
		
		Arrays.sort(arr);
		
		for(int i=arr.length-1; i>=0; i--)
			bw.write(arr[i]);
		
		bw.flush();
		bw.close();
		
	}
	
}

공유하기

facebook twitter kakaoTalk kakaostory naver band