[알고리즘] Java / 백준 / 숫자놀이 / 1755

정현명·2022년 4월 25일
0

baekjoon

목록 보기
151/180
post-thumbnail

[알고리즘] Java / 백준 / 숫자놀이 / 1755

문제


문제 링크


코드


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);
		
	}
}
profile
꾸준함, 책임감

0개의 댓글