package Baekjoon;
import java.util.Arrays;
import java.util.Scanner;
public class Main_1755 {
public static void main(String[] argv) {
String str[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
char num[]={'0','1','2','3','4','5','6','7','8','9'};
int num2[]={0,1,2,3,4,5,6,7,8,9};
Scanner sc=new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
String arr[][] =new String[N-M+1][2];
String str2[] =new String[N-M+1];
for(int i=0;i<=(N-M);i++){
String s = String.valueOf(M+i);
for(int j=0;j<10;j++) {
if (s.charAt(0) == num[j]) {
arr[i][0] = str[j];
if(i+M>=10){
for (int k = 0; k < 10; k++) {
if (s.charAt(1) == num[k]) {
arr[i][1] = str[k];
str2[i]=arr[i][0]+" "+arr[i][1];
}
}
}
else {
arr[i][1]="a";
str2[i]=arr[i][0]+" "+arr[i][1];
}
}
}
}
Arrays.sort(str2);
int arr1[]=new int[N-M+1];
for(int i=0;i<arr1.length;i++){
arr[i] = str2[i].split(" ");
for(int j=0;j<10;j++) {
if (arr[i][0].equals(str[j]) && arr[i][1].equals("a")) {
arr1[i] = num2[j];
}
else if(arr[i][0].equals(str[j])) {
for (int k = 0; k < 10; k++) {
if (arr[i][1].equals(str[k])) {
arr1[i] = num2[j]*10+num2[k];
}
}
}
}
}
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+" ");
if(i%10==9) System.out.println();
}
}
}
총 6개의 배열을 사용해 문제를 풀었다
각배열은 (숫자를 영어로 표현), (숫자를 문자로 표현), (숫자를 int로 표현), (입력한 숫자를 2차원배열에 각 단위별 문자열로 저장),(입력한 단위별 문자열을 정렬후 숫자로 변화하여 저장하는 용도로 저장)으로 구분하여 숫자를 문자열로 변경 후 charAt()함수로 숫자를 문자열로 저장하고 공백을 기준으로 합쳐준 후 오름차순 정렬 후 공백을 기준으로 split함수로 쪼갠 후 출력하는 구조로 코드를 짰다.