문제: 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번째 문자까지 동일하다면 로그의 문자 수를 비교 후 동일하다면 식별자를 비교한다.
해당 문제에 대한 규칙을 잘알고 있으면 해결할 수 있다.
'컴퓨터 > LeetCode' 카테고리의 다른 글
LeetCode 5 Longest Palindromic Substring Medium [Java] (0) | 2023.12.30 |
---|---|
LeetCode 49 Group Anagrams Medium [Java] (0) | 2023.12.29 |
LeetCode 819 Most Common Word Easy [Java] (0) | 2023.12.28 |
LeetCode 344 Reverse String Easy [Java] (0) | 2023.12.25 |
LeetCode 125 valid-palindrome Easy [Java] (1) | 2023.12.24 |