ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 937. Reorder Data in Log Files
    Programming/leetcode 2021. 1. 21. 10:18
    728x90
    • 주어진 데이터에서 문자데이터와 숫자데이터를 구분하는 문제
    • 맨앞에 문자 데이터/숫자 데이터에 따라서 구분자가 주어짐(let, dig)
    • 문자 데이터는 구분자를 제외하고, 사전순으로 정렬하되, 같을 경우에는 구분자순서로 정렬
    • 숫자데이터는 들어온 순서대로 출력
    • 풀이
    def reorderLogFiles(logs) -> [str]:
        let, dig = [], []
    
        for item in logs:
            #"dig1 8 1 5 1", "let1 art can"을 구분하는 방법
            # dig1과 let1로 구분해도 되지만, 어차피 숫자log는 뒤에 숫자만 나옴
            # 따라서 짤라봐서 배열 1번이 숫자면 숫자에 넣고, 그렇지 않으면 문자에 넣자
    
            if item.split(' ')[1].isalpha():
                let.append(item)
            else:
                dig.append(item)
        # 문제 조건에 letter는 구분자를 제외하고 사전순 정렬이고, 같을 경우에만 구분자 이용
        # 숫자 배열은 입력 그대로 출력
    
        # list sort시에 key값을 주고, 들어온 값을 split 구분자 이후의 값으로 정렬하고([1:])
        # 모두 같을 경우에는 구분자를 비교
        let.sort(key=lambda x:(x.split(' ')[1:],x.split(' ')[0]))
    
        return let+dig
    
    print(f'{reorderLogFiles(["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"])}')
    
    

    'Programming > leetcode' 카테고리의 다른 글

    1437. Check If All 1's Are at Least Length K Places Away  (0) 2021.01.26
    5. Longest Palindromic Substring  (0) 2021.01.25
    49. Group Anagrams  (0) 2021.01.21
    819. Most Common Word  (0) 2021.01.21
    125. Valid Palindrome  (0) 2021.01.21
Designed by Tistory.