LeetCode - 937. Reorder Data in Log

흔들린돈까스·2025년 4월 17일
0

문제요약

[로그를 다음과 같은 기준으로 재정렬하는 문제]

  • 로그의 가장 앞부분은 식별자 , 순서에 영향을 끼치지 않음
  • 문자로 구성된 로그가 숫자로 구성된 로그보다 앞에 오며 , 사전순으로 정렬
  • 문자가 동일한 경우에는 식별자순으로 정렬
  • 숫자 로그는 입력 순서대로 (= 정렬 기준 x)

문제 접근

1. 문자로 구성된 로그와 숫자로 구성된 로그를 분리
List<String> letterList = new ArrayList<>(); , List<String> numList = new ArrayList<>();
2-1. 별도의 리스트를 사용해 문자 로그들을 삽입 
 for (String log : logs) {
        if (Character.isDigit(log.split(" ")[1].charAt(0))){
            numList.add(log);
        }else{
            letterList.add(log);
        }
    }
2-2. 조건에 따라 정렬 (공백을 기준으로 분리 후 식별자 다음으로 오는 로그의 숫자 여부로 리스트 분리)
    letterList.sort((s1 , s2) -> {
        String[] s1x = s1.split(" ", 2);
        String[] s2x = s2.split(" ", 2);
        //문자가 동일한 경우 식별자 순으로 비교
        if (compared == 0){
            return s1x[0].compareTo(s2x[0]);
        }else{
            return compared;
        }
    });
3. 문자 리스트 정렬이 완료되었기 때문에 그 뒤로 남은 리스트들 붙여줌
	letterList.addAll(numList);
	return letterList.toArray(new String[0]); 
	//toArray(new String[0]) -> 리스트를 배열로 전환
profile
개발자꿈나무입니댜

0개의 댓글