๋ฌธ์
๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๊ฒ์ ์ฝ๋ค. ์๊ฐ ์ฃผ์ด์ง๋ฉด, ๊ทธ ์์ ๊ฐ ์๋ฆฌ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฌํ๊ณ ์ํ๋ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋ฆฌ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
2143
์์ ์ถ๋ ฅ 1
4321
ํ์ด
๊ทธ๋ฅ ์ ๋ ฅ๋ฐ์ ์๋ฅผ ํ์๋ฆฌ์ฉ ๋ถ๋ฆฌํ ํ ์ ๋ ฌํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ค๋ฐ๊ฟ ์์ด ์ถ๋ ฅํ๋ฉด ๋๋ค
1. ์ฃผ์ด์ง๋ ์ n์ String s์ ์ ์ฅํ๋ค
2. s์ ๊ธธ์ด๋งํผ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , s๋ฅผ ํ์๋ฆฌ์ฉ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ๋ค.
=> charAt() , getNumericValue() ๋ฉ์๋ ์ฌ์ฉ
3. ๋ฐฐ์ด์ ์ ๋ ฌํ๋ค. 0~9๊น์ง์ ๋ฒ์๋ฐ์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์นด์ดํ ์ ๋ ฌ์ ์ฌ์ฉํ์์ง๋ง ๋ค๋ฅธ ์ ๋ ฌ๋ ์๊ด ์๋ค
4. ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅํ๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class B1427 {
static void countingSort(int[] a, int n) {
int max = a[0];
for(int i = 0; i < n; i++) {
if(a[i] > max)
max = a[i];
}
int[] counting = new int[max+1];
int[] b = new int[n];
for(int i = 0; i < n; i++) counting[a[i]]++;
for(int i = 1; i <= max; i++) counting[i] += counting[i-1];
for(int i = n-1; i >= 0; i--) b[--counting[a[i]]] = a[i];
for(int i = 0; i < n; i++) a[i] = b[i];
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int[] num = new int[s.length()];
for(int i = 0; i < num.length; i++) {
num[i] = Character.getNumericValue(s.charAt(i));
}
countingSort(num, num.length);
for(int i = num.length-1; i >= 0; i--) {
System.out.print(num[i]);
}
}
}