[백준] BOJ_1755 숫자놀이 JAVA

최진민·2021년 7월 12일
0

Algorithm_BOJ

목록 보기
81/92
post-thumbnail

BOJ_1755 숫자놀이

문제

79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.

문제는 정수 M, N(1 ≤ M, N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.


입력

첫째 줄에 M과 N이 주어진다.


출력

M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.


예제 입&출력


소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    private static List<Info> list;
    private static String[] numToStr = {"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 n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        list = new ArrayList<>(m - n + 1);

        for (int i = n; i <= m; i++) {
            String str = String.valueOf(i);
            StringBuilder sb = new StringBuilder();

            for (int j = 0; j < str.length(); j++) {
                sb.append(numToStr[str.charAt(j) - '0']);

                if (str.length() > 1) { //두 자릿수의 수일 경우
                    sb.append(" ");
                }
            }
            list.add(new Info(sb.toString(), i));
        }

        Collections.sort(list);

        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i).num + " ");
            if ((i + 1) % 10 == 0) {
                System.out.println();
            }
        }
    }

    private static class Info implements Comparable<Info> {
        String word;
        int num;

        public Info(String word, int num) {
            this.word = word;
            this.num = num;
        }

        @Override
        public int compareTo(Info o) {
            return this.word.compareTo(o.word);
        }
    }
}

Comment

  • 클래스를 형성하여 자바의 인터페이스 중 하나인 Comparable을 이용한 정렬했다.
    • 이는 Collections.sort 시, 오버라이드 된 메서드(compareTo)의 정렬을 따른다.

profile
열심히 해보자9999

0개의 댓글