알고리즘 스터디 4주차[정렬]

정재혁·2022년 2월 5일
0

[정렬] 백준1755

[숫자놀이]



package Baekjoon;

import java.util.Arrays;
import java.util.Scanner;

public class Main_1755 {
    public static void main(String[] argv) {
        String str[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
        char num[]={'0','1','2','3','4','5','6','7','8','9'};
        int num2[]={0,1,2,3,4,5,6,7,8,9};

        Scanner sc=new Scanner(System.in);
        int M = sc.nextInt();
        int N = sc.nextInt();
        String arr[][] =new String[N-M+1][2];
        String str2[] =new String[N-M+1];


        for(int i=0;i<=(N-M);i++){
            String s = String.valueOf(M+i);
            for(int j=0;j<10;j++) {
                if (s.charAt(0) == num[j]) {
                    arr[i][0] = str[j];
                    if(i+M>=10){
                        for (int k = 0; k < 10; k++) {
                            if (s.charAt(1) == num[k]) {
                                arr[i][1] = str[k];
                                str2[i]=arr[i][0]+" "+arr[i][1];
                            }
                        }
                    }
                    else {
                        arr[i][1]="a";
                        str2[i]=arr[i][0]+" "+arr[i][1];
                    }
                }
            }
        }
        Arrays.sort(str2);

        int arr1[]=new int[N-M+1];

        for(int i=0;i<arr1.length;i++){
            arr[i] = str2[i].split(" ");
            for(int j=0;j<10;j++) {
                if (arr[i][0].equals(str[j]) && arr[i][1].equals("a")) {
                    arr1[i] = num2[j];
                }
                else if(arr[i][0].equals(str[j])) {
                    for (int k = 0; k < 10; k++) {
                        if (arr[i][1].equals(str[k])) {
                            arr1[i] = num2[j]*10+num2[k];
                        }
                    }
                }
            }
        }
        for(int i=0;i<arr1.length;i++){
            System.out.print(arr1[i]+" ");
            if(i%10==9) System.out.println();
        }
    }
}

총 6개의 배열을 사용해 문제를 풀었다
각배열은 (숫자를 영어로 표현), (숫자를 문자로 표현), (숫자를 int로 표현), (입력한 숫자를 2차원배열에 각 단위별 문자열로 저장),(입력한 단위별 문자열을 정렬후 숫자로 변화하여 저장하는 용도로 저장)으로 구분하여 숫자를 문자열로 변경 후 charAt()함수로 숫자를 문자열로 저장하고 공백을 기준으로 합쳐준 후 오름차순 정렬 후 공백을 기준으로 split함수로 쪼갠 후 출력하는 구조로 코드를 짰다.

profile
저는 정재혁임니다^___^

0개의 댓글