99클럽 코테 스터디 31일차 TIL - 백준(숫자놀이)(java)

Gaeng·2024년 11월 27일
post-thumbnail

문제 링크 백준 숫자놀이

Map, List를 통해 복합으로 문제를 풀엇음.

풀이

  1. 먼저 숫자를 문자열로 바꿀 배열선언
  2. Map을 통해 key, value를 통해 숫자와 문자로 된 숫자 넣은 후
    Map<String, Integer> numberMap= new HashMap<>();
  3. String에 대한 것을 keyset을 통해 ArrayList를 통해 정렬
  4. 반복문을 통해 Map.size만큼 sb.append(numberMap.get(strList.get(i)));그 값을 불러와 출력
  5. 10단위만큼 줄바꿈처리, 그 것이 아니면 공백 처리

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;


public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int M = Integer.parseInt(st.nextToken()); //작은수
        int N = Integer.parseInt(st.nextToken()); //큰 수
        String [] numberChar = {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        Map<String, Integer> numberMap= new HashMap<>();
        for(int i = M; i<=N; i++){
            String number2 = String.valueOf(i);
            if(number2.length() == 1){
                int x = Integer.parseInt(number2);
                numberMap.put(String.valueOf(numberChar[x]),i);
            }else{
                int x = Integer.parseInt(String.valueOf(number2.charAt(0)));
                int y = Integer.parseInt(String.valueOf(number2.charAt(1)));

                String numberString = String.valueOf(numberChar[x])+" "+String.valueOf(numberChar[y]);
                numberMap.put(numberString, i);
            }
        }
        List<String> strList = new ArrayList<>(numberMap.keySet());
        Collections.sort(strList);

        int count =0;

        StringBuilder sb = new StringBuilder();
        for(int i=0; i<numberMap.size(); i++){
           sb.append(numberMap.get(strList.get(i)));

           count++;
           if(count%10==0){
               sb.append("\n");
           }else{
               sb.append(" ");
           }
        }
       bw.write(String.valueOf(sb));
       bw.flush();
       bw.close();


    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글