#문제
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하는 것도 가능합니다.
'💡Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 (Java) (0) | 2021.10.18 |
---|---|
[프로그래머스] 다음 큰 숫자 (Java) (0) | 2021.10.18 |
[프로그래머스] 스킬트리 (Java) (0) | 2021.10.18 |
[프로그래머스] 올바른 괄호 (Java) (0) | 2021.10.18 |
[프로그래머스] 숫자의 표현 (Java) (0) | 2021.10.18 |