기타/코딩테스트

(코테) 프로그래머스_[3차] 파일명 정렬

불광동 물주먹 2025. 8. 6. 14:56

 

 

 

 

 

 

import java.util.*;
class Solution {
    public String[] solution(String[] files) {
        String[] answer = {};
        
        Arrays.sort(files,(a,b)->{
        
        String[] first = sliceStr(a);
        String[] second = sliceStr(b);
                    
        int headSort =first[0].toLowerCase().compareTo(second[0].toLowerCase());
            if (headSort!=0) return headSort;
                
                int fir=Integer.parseInt(first[1]);
                int sec=Integer.parseInt(second[1]);
            return  Integer.compare(fir,sec);
        });
        
        return files;
    }
    
    public String[] sliceStr(String str){
        
        //1 head 분리
        int strEnd=0;
        while(strEnd<str.length() && !Character.isDigit(str.charAt(strEnd)) ){
            strEnd ++;
        }
        
        int numEnd=strEnd;
        while(numEnd<str.length() && Character.isDigit(str.charAt(numEnd))){
            numEnd ++;
        }
        
        // 숫자 분리
        String head = str.substring(0,strEnd);
        String num  = str.substring(strEnd,numEnd);            
                
        return new String[]{head,num};
    }
}

 

 

 

 

1. Character.isDigit  -> 해당 문자 숫자인지 판별하는 함수

 

2.Integer.compare  -> int형 값 비교  기본형이라  객체.compareTo(객체) 만 가능함.

 

3. Arrays.sort(정렬할 변수, (a,b)-> {   })