import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
StringTokenizer tokenizer = new StringTokenizer(line, " ");
int M = Integer.parseInt(tokenizer.nextToken());
int N = Integer.parseInt(tokenizer.nextToken());
List<Integer> numbers = new ArrayList<>();
for (int i = M; i <= N; i++) {
numbers.add(i);
}
Map<Integer, String> dictionary = new HashMap<>();
dictionary.put(0, "zero");
dictionary.put(1, "one");
dictionary.put(2, "two");
dictionary.put(3, "three");
dictionary.put(4, "four");
dictionary.put(5, "five");
dictionary.put(6, "six");
dictionary.put(7, "seven");
dictionary.put(8, "eight");
dictionary.put(9, "nine");
TreeMap<String, Integer> treeMap = new TreeMap<>();
for (int number : numbers) {
StringBuilder sb = new StringBuilder();
String target = String.valueOf(number);
for (int j = 0; j < target.length(); j++) {
char c = target.charAt(j);
int candidate = Character.getNumericValue(c);
if (dictionary.containsKey(candidate)) {
sb.append(dictionary.get(candidate));
if (j < target.length() - 1) {
sb.append(" ");
}
}
}
treeMap.put(sb.toString(), number);
}
int count = 0;
for (int number : treeMap.values()) {
System.out.print(number);
count++;
if (count % 10 == 0) {
System.out.println();
} else {
System.out.print(" ");
}
}
}
}
import java.io.*;
import java.util.*;
public class Main_HashMap {
static int m, n; // m 이상 n 이하의 정수
static String[] numberStrArr; // "zero" ~ "nine" 저장
static StringBuilder sb = new StringBuilder();
static List<String> list = new ArrayList<>();
static Map<String, Integer> map = new HashMap<>();
static void solution() {
// 1) 정수를 영어로 읽은 문자열을 List 와 HashMap 에 저장
for (int i = m; i <= n; i++) {
String strNumber = String.valueOf(i); // "80" 형태 문자열
StringBuilder strByDigit = new StringBuilder();
// 한 숫자(문자)씩 읽은 결과 문자열 ("eight zero" 형태)
for (int j = 0; j < strNumber.length(); j++) {
int digit = Character.getNumericValue(strNumber.charAt(j));
strByDigit.append(numberStrArr[digit])
.append(" ");
}
list.add(strByDigit.toString());
map.put(strByDigit.toString(), i);
}
// 2) List 를 사전 순으로 정렬
Collections.sort(list);
// 3) 정렬된 List 의 문자열들을 HashMap 에 맵핑하여, 정수를 꺼내어 출력
int count = 1;
for (String s : list) {
int num = map.get(s);
sb.append(num).append(" ");
if (count % 10 == 0)
sb.append("\n");
count++;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in)
);
StringTokenizer st = new StringTokenizer(br.readLine());
m = Integer.parseInt(st.nextToken());
n = Integer.parseInt(st.nextToken());
numberStrArr = new String[] {
"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"
};
solution();
System.out.println(sb);
}
}
Map<Integer, String> temp = new HashMap<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < numbers.size(); i++) {
String target = String.valueOf(numbers.get(i));
for (int j = 0; j < target.length(); j++) {
char c = target.charAt(j);
int candidate = Character.getNumericValue(c);
if (dictionary.containsKey(candidate)) {
sb.append(dictionary.get(candidate));
sb.append(" ");
}
}
treemap => https://coding-factory.tistory.com/557
list가 {1,2,3}이고, map이 {1:one, 2:two, 3:three}일 때,
String num = map.get(1); -> one으로 가져올 수 있다.