일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Nextjs React 18
- React API 참고서
- background setttimeout
- context
- background setInterval
- background: url
- getUTCDate
- codingtest
- Next13
- react
- Babel
- background tab
- hook
- notFound()
- React 공식문서
- Programmers
- Nextjs
- Javascript
- RTK Query
- 고급안내서
- React 18 Nextjs
- next13 head
- React18
- React 18
- React 고급 안내서
- react hook
- react-helmet
- React 고급안내서
- Render Props
- CSS
Archives
- Today
- Total
akjfal
[Programmers] [3차] 파일명 정렬 본문
// Head 를 기준으로 정렬 -> 대소문자 구분x
// Number로 정렬
// 둘다 같으면 원래 입력순으로 정렬
import java.util.LinkedList;
class Solution {
class Node implements Comparable<Node>{
String head;
int num;
int idx;
Node(String s, int idx){
s = s.toLowerCase();
int[] numIdx = checkIdx(s);
this.head = s.substring(0, numIdx[0]);
this.num = Integer.parseInt(s.substring(numIdx[0], numIdx[1]));
this.idx = idx;
// System.out.println(this.head + " " + this.num);
}
public int[] checkIdx(String s){
int[] numIdx = new int[2];
int idx = 1;
int length = s.length();
while(numIdx[1] == 0 && idx < length){
char c = s.charAt(idx);
if(numIdx[0] == 0){
if('0' <= c && '9' >= c){
numIdx[0] = idx;
}
}else{
if('0' > c || '9' < c){
numIdx[1] = idx;
}
}
idx++;
}
if(numIdx[1] == 0)
numIdx[1] = length;
return numIdx;
}
public int compareTo(Node n){
if(this.head.equals(n.head)){
if(this.num == n.num){
return this.idx - n.idx;
}else{
return this.num - n.num;
}
}else{
return this.head.compareTo(n.head);
}
}
}
public String[] solution(String[] files) {
String[] answer = new String[files.length];
LinkedList<Node> list = new LinkedList<>();
int idx = 0;
for(String file : files){
list.add(new Node(file, idx));
idx++;
}
list.sort(null);
idx = 0;
for(Node n : list){
answer[idx] = files[n.idx];
idx++;
}
return answer;
}
}
regex.pattern, regex.matcher, Charactor.isdigit() 등 좋은게 많다. 다른방식으로 구현도 해봐야겠다.
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 짝지어 제거하기 (0) | 2021.06.24 |
---|---|
[Programmers] 올바른 괄호 (0) | 2021.06.24 |
[Programmer] [3차] 압축 (0) | 2021.06.23 |
[Programmers] [3차] 방금 그곡 (0) | 2021.06.22 |
[Programmers] 가장 큰 정사각형 찾기 (0) | 2021.06.22 |
Comments