[프로그래머스] LV.2 [3차] 파일명 정렬
1. 문제 : Link
파일명 정렬하기
2. 풀이
lamda활용
3. 코드
def solution(files):
answer = []
real = []
for j in range(len(files)):
s = ''
tmp = []
file = files[j]
H = False
for i in range(len(file)):
f = file[i]
if H == False:
if f.isnumeric() == False:
if f.isalpha():
s += f.lower()
else:
s += f
else:
tmp.append(s)
s = ''
H = True
if H == True:
if f.isnumeric() == True:
s += f
if i == len(file)-1:
tmp.append(int(s))
break
else:
tmp.append(int(s))
break
tmp.append(j)
answer.append(tmp)
answer = sorted(answer, key = lambda x : (x[0], x[1]))
for an in answer:
real.append(files[an[2]])
return real
import java.util.*;
class Solution {
public String[] solution(String[] files) {
Arrays.sort(files, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String h1 = o1.split("[0-9]")[0];
String h2 = o2.split("[0-9]")[0];
int result = h1.toLowerCase().compareTo(h2.toLowerCase());
if ( result == 0 ) {
// 문자열이 같은 경우 숫자를 비교한다.
result = findNum(o1,h1)-findNum(o2,h2);
}
return result;
}
});
return files;
}
private int findNum( String s, String h ) {
s = s.replace(h, "");
String result ="";
for( char c : s.toCharArray()) {
if( Character.isDigit(c) && result.length() < 5 ) {
result+=c;
}else
break;
}
return Integer.valueOf(result);
}
}
'💻 Coding Problems Solving > Array | String | Loop' 카테고리의 다른 글
[BOJ 2501] 약수 구하기 (0) | 2022.06.03 |
---|---|
[프로그래머스] LV.2 [3차] 방금그곡 (0) | 2022.04.25 |
[프로그래머스] LV.2 예상 대진표 (0) | 2022.04.21 |
[프로그래머스] LV.2 [1차] 캐시 (0) | 2022.04.19 |
[프로그래머스] LV.2 삼각 달팽이 (0) | 2022.04.19 |
최근댓글