알고리즘/백준
[JAVA]백준_1755_숫자놀이
박 현 황
2021. 3. 29. 16:00
문제링크
https://www.acmicpc.net/problem/1755
1755번: 숫자놀이
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로
www.acmicpc.net
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static String numToString[] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
//숫자를 문자로 변환할 때 사용할 배열
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt(); //숫자 입력
int size = N-M+1; //숫자의 크기만큼 배열 만들어주기
Node node[] = new Node[size]; //숫자와 숫자를 문자열로 변환한 정보 저장할 Node배열
int idx = M; //시작 순서는 M부터
for(int i=0;i<size;i++) {
node[i] = new Node(idx); //Node 클래스에 숫자 넣어주면서 문자열로 변환하기
idx++;
}
Arrays.sort(node);
for(int i=0;i<size;i++) {
if(i!=0 && i%10 == 0) System.out.println();
System.out.print(node[i].number+" "); //출력 10개씩!
}
}
static class Node implements Comparable<Node>{ //문자열 순서대로 정렬하기 위해 implements
int number;
String numberToString;
public Node(int number) {
super();
this.number = number;
int num10 = number/10 ; //10의 자리수
int num1 = number % 10; //1의 자리수
if(number >=10) {//10의 자리수일 경우 문자열 변환
numberToString = numToString[num10]+" "+numToString[num1];
}
else {//1의 자리수일 경우 zero안붙게 num1으로만 문자열 변환
numberToString = numToString[num1];
}
}
@Override
public int compareTo(Node o) {//문자열 순서대로 정렬하기 위한 compareTo
// TODO Auto-generated method stub
return this.numberToString.compareTo(o.numberToString);
}
}
}