본문 바로가기
백준

백준 1755번 : 숫자놀이

by Huiyeong 2021. 4. 9.

 문제

www.acmicpc.net/problem/1755

 

1755번: 숫자놀이

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

www.acmicpc.net

1755 숫자놀이

 

 구현 방법

 클래스에 comparable을 구현하여 사전 순으로 정렬을 해줍니다. 숫자를 영어로 변환하기 위해 trans라는 string 배열을 생성하여 각 인덱스에 해당되는 영어를 저장해주었습니다. 각 자릿수에 해당하는 숫자를 하나씩 읽어서 해당하는 숫자의 영어로 바꿔준 뒤 저장하고 입력된 숫자 길이만큼 모두 찾아주면 사전 순대로 정렬을 하여 10개씩 출력해주었습니다.

 

 구현 코드

package BOJ.Silver;

import java.io.*;
import java.util.*;

public class BOJ1755_숫자놀이 {
	static String[] trans = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; // 각 수에 해당하는 영어로 변환
	static class Number implements Comparable<Number>{ // 숫자와 영어로 변환한 숫자를 관리하기 위한 class 생성
		String num, english;

		public Number(String num, String english) {
			super();
			this.num = num;
			this.english = english;
		}

		@Override
		public int compareTo(Number o) {
			return this.english.compareTo(o.english); // 영어 사전순으로 정렬하기 위함
		}
	}
	
	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());
		StringBuilder sb = null;
		// 입력완료
		List<Number> list = new ArrayList<>(); // 변환한 값 담기 위한 리스트 선언
		for (int i=M;i<=N;i++) {
			String now = i+""; // 숫자 단위로 하나씩 읽기 위함
			sb = new StringBuilder();
			for (int j=0;j<now.length();j++) { // 입력된 숫자 길이만큼
				int temp = now.charAt(j)-'0'; // 하나씩 읽어서
				sb.append(trans[temp]); // 해당하는 숫자의 영어로 바꿔주기
			}
			list.add(new Number(now, sb.toString())); // 리스트에 저장
		}
		Collections.sort(list); // 사전순대로 정렬
		sb = new StringBuilder();
		for (int i=0;i<list.size();i++) {
			sb.append(list.get(i).num+" ");
			if ((i+1)%10==0) sb.append("\n"); // 10개 출력되면 줄 바꿈
		}
		System.out.println(sb);
	}
}

 

정답!

'백준' 카테고리의 다른 글

백준 2206번 : 벽 부수고 이동하기  (0) 2021.04.09
백준 16953번 : A -> B  (0) 2021.04.09
백준 16235번 : 나무 재테크  (0) 2021.04.09
백준 2146번 : 다리 만들기  (0) 2021.04.09
백준 17472번 : 다리 만들기2  (0) 2021.04.05