Algorithm/LeetCode
[string] reorder data in log files
sw_develop
2025. 3. 9. 10:12
✅ Problem
https://leetcode.com/problems/reorder-data-in-log-files/description/
✅ Approach & Solution
방식)
더보기
문제 조건
- 로그의 가장 앞부분은 식별자로서, 순서에 영향을 끼치지 않는다.
- 문자로 구성된 로그가 숫자 로그보다 앞에 오며, 문자 로그는 사전순으로 한다.
- 문자가 동일한 경우에는 식별자순으로 한다.
- 숫자 로그는 입력 순서대로 한다.
풀이
- 로그 나누기 (문자 로그, 숫자 로그)
- 로그 정렬 (문자 로그만 정렬 수행)
- 로그 합친 후 반환
class Solution {
public String[] reorderLogFiles(String[] logs) {
List<String> digitLogs = new ArrayList<>();
List<String> letterLogs = new ArrayList<>();
// 로그 나누기
for (String log : logs) {
if (Character.isDigit(log.split(" ")[1].charAt(0))) {
digitLogs.add(log);
} else {
letterLogs.add(log);
}
}
// 로그 정렬
letterLogs.sort((s1, s2) -> {
// 식별자와 식별자 아닌 부분으로 나누기
String[] s1x = s1.split(" ", 2);
String[] s2x = s2.split(" ", 2);
int compared = s1x[1].compareTo(s2x[1]);
if (compared == 0) {
return s1x[0].compareTo(s2x[0]);
} else {
return compared;
}
});
// 로그 합치기
letterLogs.addAll(digitLogs);
return letterLogs.toArray(new String[0]);
}
}