문제
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
public class Main_1755 {
// 숫자를 문자열로 매핑할 배열
static String mapping[] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
// 숫자를 문자열로 변환한 후 저장할 리스트
List<String> numbers = new ArrayList<>();
// 문자열을 key로, 숫자를 value로 하는 맵
Map<String, Integer> map = new HashMap<>();
// 한 자릿수, 두 자릿수에 대해 각각 문자열로 변환
for(int i=M;i<=N;i++) {
String mappingString = "";
// 한 자릿수일 경우
if(i <10) {
mappingString = mapping[i];
}
// 두 자릿수일 경우
else {
mappingString = mapping[i/10] + " " + mapping[i%10];
}
// 맵에 (문자열, 숫자) 넣기
map.put(mappingString, i);
// 리스트에 문자열 넣기
numbers.add(mappingString);
}
// 리스트 정렬
Collections.sort(numbers);
// 문자열 리스트를 정렬하고 문자열에 해당하는 숫자를 맵에서 찾아 순서대로 정답 문자열로 만듦
StringBuilder sb = new StringBuilder();
for(int i=0;i<numbers.size();i++) {
if(i> 1 && i%10 == 0) sb.append("\n");
sb.append(map.get(numbers.get(i))+" ");
}
sb.setLength(sb.length()-1);
System.out.println(sb);
}
}