π˜Ύπ™€π™’π™₯𝙖𝙧𝙖𝙩𝙀𝙧<𝙏>

uuuouuoΒ·2022λ…„ 5μ›” 16일
0
post-thumbnail

πŸ“ Comparator< T > μ •λ ¬


βœ” μ½”λ“œ

Arrays.sort(files, new Comparator<String>() { // String에 λŒ€ν•΄ μ •λ ¬ν•  경우
    @Override
    public int compare(String o1, String o2) {

        int result = o1.compareTo(o2);

        if(result == 0) {
            // λ¬Έμ œμ— λ”°λ₯Έ κ΅¬ν˜„           
        }
        return result;
    }

});

+ λžŒλ‹€μ‹ μ½”λ“œ

Arrays.sort(files, (o1, o2) -> {

    int result = o1.compareTo(o2);

    if(result == 0) {
        // λ¬Έμ œμ— λ”°λ₯Έ κ΅¬ν˜„           
    }
    return result;
});

βœ” 문제 μ‘μš© μ˜ˆμ‹œ (ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€: 파일λͺ… μ •λ ¬)

import java.util.*;
class Solution {
    public String[] solution(String[] files) {

        Arrays.sort(files, (f1, f2) -> {
                String h1 = f1.split("[0-9]")[0];
                String h2 = f2.split("[0-9]")[0];
                
                int result = h1.toLowerCase().compareTo(h2.toLowerCase());
                
                if(result == 0) 
                    result = getNum(f1, h1) - getNum(f2, h2);               
                    
                return result;     
        });
        return files;
    }
    
    static int getNum(String file, String head) {
        
        file = file.replace(head, "");
        String result = "";
        
        for(char c : file.toCharArray()) {
            
            // 숫자 확인 & 길이 확인 !
            if(!Character.isDigit(c) 
               || result.length() > 5) break;
            result += c;
        }
        
        return Integer.parseInt(result);
    }
}
  • λ¬Έμžμ—΄ λ°°μ—΄.toCharArray() : ν•œ λ¬Έμžμ”© λ‚˜λ‰˜μ–΄ λ°°μ—΄ 생성
  • Character.isDigit(c) : ν•΄λ‹Ή λ¬Έμžκ°€ μˆ«μžμΈμ§€ νŒλ³„

0개의 λŒ“κΈ€