#문제
https://programmers.co.kr/learn/courses/30/lessons/17686
#소스코드
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 |