Map, List를 통해 복합으로 문제를 풀엇음.
풀이
- 먼저 숫자를 문자열로 바꿀 배열선언
- Map을 통해 key, value를 통해 숫자와 문자로 된 숫자 넣은 후
Map<String, Integer> numberMap= new HashMap<>();
- String에 대한 것을 keyset을 통해 ArrayList를 통해 정렬
- 반복문을 통해 Map.size만큼
sb.append(numberMap.get(strList.get(i)));그 값을 불러와 출력
- 10단위만큼 줄바꿈처리, 그 것이 아니면 공백 처리
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
String [] numberChar = {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
Map<String, Integer> numberMap= new HashMap<>();
for(int i = M; i<=N; i++){
String number2 = String.valueOf(i);
if(number2.length() == 1){
int x = Integer.parseInt(number2);
numberMap.put(String.valueOf(numberChar[x]),i);
}else{
int x = Integer.parseInt(String.valueOf(number2.charAt(0)));
int y = Integer.parseInt(String.valueOf(number2.charAt(1)));
String numberString = String.valueOf(numberChar[x])+" "+String.valueOf(numberChar[y]);
numberMap.put(numberString, i);
}
}
List<String> strList = new ArrayList<>(numberMap.keySet());
Collections.sort(strList);
int count =0;
StringBuilder sb = new StringBuilder();
for(int i=0; i<numberMap.size(); i++){
sb.append(numberMap.get(strList.get(i)));
count++;
if(count%10==0){
sb.append("\n");
}else{
sb.append(" ");
}
}
bw.write(String.valueOf(sb));
bw.flush();
bw.close();
}
}