컴퓨터/LeetCode
LeetCode 937 Reorder Data in Log File Medium [Java]
이상한 나그네
2023. 12. 27. 01:03
문제: https://leetcode.com/problems/reorder-data-in-log-files/
1. 코드
class Solution {
public String[] reorderLogFiles(String[] logs) {
List<String> digit = new ArrayList<>();
List<String> letter = new ArrayList<>();
for(String log : logs) {
if(log.split(" ")[1].matches("[0-9]+"))
digit.add(log);
else
letter.add(log);
}
Collections.sort(letter, (a, b) -> {
String[] s1 = a.split(" ");
String[] s2 = b.split(" ");
int compared = s1[1].compareTo(s2[1]);
if(compared == 0)
compared = s1[2].compareTo(s2[2]);
if(compared == 0)
compared = s1.length - s2.length;
return compared == 0 ? s1[0].compareTo(s2[0]) : compared;
});
letter.addAll(digit);
return letter.toArray(new String[0]);
}
}
2. 설명
숫자 로그인지 문자로 구성된 로그인지 구분하여 각각의 리스트로 분리한 뒤 문자로 로그끼리 비교하여 사전순으로 하는데 만약 index 기준 2번째 문자까지 동일하다면 로그의 문자 수를 비교 후 동일하다면 식별자를 비교한다.
해당 문제에 대한 규칙을 잘알고 있으면 해결할 수 있다.