[백준] 1755. 숫자 놀이 (java, 정렬)
728x90
반응형
숫자와 원하는 형태로 변환한 문자열을 같이 넣고 문자열의 사전순으로 정렬한 뒤 출력한다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Word implements Comparable<Word>{
String word;//규칙에 따라 문자열로 변환된 숫자
int num;// 실제 숫자
public Word(String word,int num) {
super();
this.word = word;
this.num=num;
}
@Override
public int compareTo(Word o) {// 사전 순 정렬
return this.word.compareTo(o.word);
}
}
public class Main {
static int m,n;
static ArrayList<Word> list; // 정렬될 변환된 문자열과 숫자가 들어가는 리스트
//10은 one zero로 표시하므로 0부터 9까지만 영어로 변환해줄 문자열 표시
static String[] arr= {"zero","one","two","three","four","five","six","seven","eight","nine"};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
m=sc.nextInt();
n=sc.nextInt();
list=new ArrayList<>();
for (int i = m; i<=n; i++) {
String temp=Integer.toString(i);
char[] ch=temp.toCharArray();// 인덱스에 접근하기 쉽도록 문자 배열로 변환해준다.
StringBuilder sb=new StringBuilder(); //숫자를 문자열로 변환해줄 때 더해준다.
for (int j = 0; j < ch.length; j++) {
sb.append(arr[ch[j]-'0']);
if(ch.length>1) {
sb.append(" ");//각 숫자를 공백으로 구분해준다.
}
}
list.add(new Word(sb.toString(),i)); //(변환된 문자열, 실제 숫자) 쌍을 리스트에 넣어준다.
}
Collections.sort(list); //정렬해준다. compareTo에 따라 사전순 정렬~
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i).num+" ");
if((i+1)%10==0) {//10개를 출력한 후에는 줄바꿈
System.out.println();
}
}
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1774번 우주신과의 교감 (java, mst, 크루스칼) (0) | 2021.04.05 |
---|---|
[백준] 16953번 A -> B (JAVA, DFS) (0) | 2021.03.30 |
[백준] 2629번. 양팔 저울 (java) (0) | 2021.03.29 |
[백준] 1647. 도시 분할 계획 (JAVA, MST, 크루스칼) (0) | 2021.03.29 |
[백준] 11403번 경로 찾기 (java, 플로이드 와샬) (0) | 2021.03.29 |
TAGS.