728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17686#
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
사실상 tail 은 존재하지 않아도 되는 문제
숫자가 최대 5개라는 것을 알고 풀면 된다
런타임 오류가 계속 나서 반례 하나로 대입해서 풀어봤더니 풀렸다
head 가 끝나는 지점 + 5 보다 number 의 길이가 길어지면 idx 를 head 지점 + 5 로 조정
while 문 안에서 계속 idx ++ 하다보면 length 만큼 가기때문에 break 문 넣어줌
import java.util.*;
class File {
String head;
int number;
String origin;
public File(String origin) {
this.origin = origin;
int idx = 0;
while((int) origin.charAt(idx) < 48 || (int) origin.charAt(idx) > 57) {
idx ++;
}
int tmp = idx;
head = origin.substring(0, tmp).toLowerCase();
while((int) origin.charAt(idx) >= 48 && (int) origin.charAt(idx) <= 57) {
idx ++;
if(idx == origin.length()) break;
}
if(tmp + 5 < idx) idx = tmp + 5;
number = Integer.parseInt(origin.substring(tmp, idx));
}
public String getHead() {
return head;
}
public int getNumber() {
return number;
}
public String getOrigin() {
return origin;
}
}
class Solution {
public String[] solution(String[] files) {
List<File> list = new ArrayList<>();
for(String f : files) {
list.add(new File(f));
}
list.sort(Comparator.comparing(File::getHead)
.thenComparingInt(File::getNumber));
return list.stream().map(File::getOrigin).toArray(String[]::new);
}
}728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 시소 짝꿍 자바 JAVA 풀이 (0) | 2025.05.13 |
|---|---|
| 프로그래머스 level2 과제 진행하기 자바 JAVA 풀이 (0) | 2025.03.13 |
| 프로그래머스 뒤에 있는 큰 수 찾기 (0) | 2023.08.29 |
| 프로그래머스 다음 큰 숫자 자바 java 풀이 (0) | 2022.11.11 |
| 프로그래머스 더 맵게 자바 풀이 (0) | 2022.06.09 |