💡Problem Solving/Programmers

[프로그래머스] 파일명 정렬 (Java)

gom20 2021. 10. 18. 17:29

#문제

https://programmers.co.kr/learn/courses/30/lessons/17686

 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램

programmers.co.kr

 

#소스코드

import java.util.*;
import java.util.regex.*;

class File implements Comparable<File>{
    String name;
    String head;
    int number;
    String tail;
    
    public File(String name){
        this.name = name;
        divide();
    }
    
    public void divide(){
        // 가장 처음에 나오는 숫자의 시작, 끝 Index를 이용하여 split
        Pattern p = Pattern.compile("[0-9]+");
        Matcher m = p.matcher(name);
        m.find();
        this.head = name.substring(0, m.start());
        this.number = Integer.parseInt(name.substring(m.start(), m.end()));
        this.tail = name.substring(m.end());  
    }
    
    @Override
    public int compareTo(File f){
        int rs = this.head.compareToIgnoreCase(f.head);
        if(rs == 0) rs = this.number - f.number;
        return rs;
    }
}

class Solution {
    public String[] solution(String[] files) {
        ArrayList<File> list = new ArrayList<File>();
        for(String f : files){
            list.add(new File(f));
        }
        Collections.sort(list);
        return list.stream().map(s -> s.name).toArray(String[]::new);
    }
}

 

Pattern과 Matcher를 이용하여 인덱스를 구해서 substring()을 해봤습니다. 

String.split()함수에 정규식을 바로 입력하여 split하는 것도 가능합니다.