프로그래머스 파일명 정렬 (Java,자바)

jonghyukLee·2022년 9월 22일
0

이번에 풀어본 문제는
프로그래머스 파일명 정렬 입니다.

📕 문제 링크

❗️코드

import java.util.*;
class Solution {
    public String[] solution(String[] files) {
        Arrays.sort(files, new Comparator<String>() {
            @Override
            public int compare(String file1, String file2) {
                String[] arr1 = fileToArr(file1);
                String[] arr2 = fileToArr(file2);

                int compareResult = arr1[0].compareTo(arr2[0]);
                
                if (compareResult == 0) {
                    return Integer.parseInt(arr1[1]) - Integer.parseInt(arr2[1]);
                }
                return compareResult;
            }
        });

        return files;
    }
    static String[] fileToArr(String file) {
        int fileSize = file.length();
        int i = 0;
        String tmpHead = "";
        for (; i < fileSize; i++) {
            char cur = file.charAt(i);
            if (cur >= '0' && cur <= '9') {
                break;
            }
            tmpHead += cur;
        }

        String tmpNumber = "";
        for (; i < fileSize; i++) {
            char cur = file.charAt(i);
            if (cur < '0' || cur > '9') {
                break;
            }
            tmpNumber += cur;
        }

        String tmpTail = "";
        for (; i < fileSize; i++) {
            tmpTail += file.charAt(i);
        }
        return new String[]{tmpHead.toLowerCase(), tmpNumber, tmpTail};

    }
}

📝 풀이

주어진 규칙대로 파일명을 정렬하는 문제입니다.
파일명의 인덱스를 순차탐색하여, 숫자를 만난 시점까지는 Head, 숫자부터 숫자가 아닌 인덱스를 만난 지점까지는 Number, 이후는 Tail로 나누고 해당 값을 기준으로 정렬해주면 해결할 수 있습니다.

📜 후기

규칙이 복잡해서 문제를 이해하는게 더 힘들었던 것 같습니다..ㅠ

profile
머무르지 않기!

0개의 댓글