[프로그래머스] 파일명 정렬 JAVA

AMUD·2023년 6월 5일
0

Algorithm

목록 보기
60/78

문제


문제링크

접근

  • 자바 정규식을 활용하면 쉽게 풀이할 수 있다.
  • 특정한 로직으로 정렬을 할때는 Comparable을 상속 받고, compareTo 메서드를 오버라이드하여 활용한다.

풀이

import java.util.*;

class Solution {
    public String[] solution(String[] files) {
        String[] answer = new String[files.length];
        List<File> fs = new ArrayList<>();
        
        for (String f : files)
            fs.add(new File(f));
        
        Collections.sort(fs);
        
        for (int i = 0; i < files.length; i++) 
            answer[i] = fs.get(i).name;
   
        
        return answer;
    }
    
    class File implements Comparable<File> {
        String name, head;
        int number = 0;
        
        public File(String name) {
            this.name = name;
            this.head = name.split("[0-9]")[0].toUpperCase();
            String numStr = name.substring(this.head.length(), Math.min(this.head.length() + 5, name.length()));
            numStr = numStr.split("[^0-9]")[0];
            this.number = Integer.parseInt(numStr);
            
        }
        
        @Override
        public int compareTo(File f) {
            int headDiff = this.head.compareTo(f.head);
            if (headDiff != 0) return headDiff;
            
            int numDiff = this.number - f.number;
            return numDiff;
        }
        
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글