문제

  • logs 라는 리스트가 주어짐
  • log는 공백으로 구분된 문자열로 되어 있음("dig1 skfa lkajsbf")
  • log의 첫번째 단어는 식별자("dwe afnd skjf sd" "dwe"가 식별자)
  • 식별자 뒤에는 소문자로 이루어진 단어와 숫자로 이루어져 있음
    ex) ["dkjb2 sfbk jsfds", "kjsdb1 2 43 54"]
  • 반드시 식별자 뒤에는 한개 이상의 로그가 있어야 함.
  • 소문자로 이루어진 로그들은 반드시 숫자로 이루어진 로그들 보다 앞에 와야 함.
    ex) ["qw dskjb ksaj", "sadjkb skjb ksajd", "khb 1 2"]
  • 소문자로 이루어진 로그들은 알파벳 순으로 정렬 되고 만약 모든 로그가 같다면 식별자로 정렬한다.

접근

문제가 영어로 되어 있어서 인지 파악하는 시간이 오래 걸렸고 번역본을 봐도 잘 이해 되지 않았다 혼자 풀려고 했지만 결국에는 풀이를 먼저 봐버렸다.

풀이

book풀이1(24ms, 14mb)

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        # 식별자를 제외하고 로그를 소문자로그와 숫자 로그 리스트로 나눔
        letters, digits = [], []
        for log in logs:
            if log.split()[1].isdigit():
                digits.append(log)
            else:
                letters.append(log)
        
        # 소문자 로그 리스트를 알파벳 순으로 정렬 그 후 순위로는 식별자로 정렬
        letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        return letters + digits
  • 람다식으로 소문자로 이루어진 로그들만 정렬 했다.
    람다식 공부 필요!
profile
기록과 정리

0개의 댓글