Algorithm/Python

[LeetCode] 937. Reorder Log Files

🥭맹2 2021. 6. 2. 00:07

1. 문제

https://leetcode.com/problems/reorder-data-in-log-files

 

Reorder Data in Log Files - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

2. 접근 방법

일단 문제는 주어진 logs라는 리스트를 잘 확인하는 것

 

리스트의 각 요소는 str형식인데 그 안에서 띄어쓰기를 기준으로

맨 앞의 단어는 identifier이고,

identifier 뒤에 나온 것들이 숫자인 경우에는 : Digit-logs

identifier 뒤에 나온 것들이 문자인 경우에는 : Letter-logs 입니다.

 

주어진 조건은

1. Letter-logs는 무조건 Digit-logs 앞에 나와야한다.

2. Letter-logs는 identifier 뒤에 나온 것들을 기준으로 다시 sort를 한다. (사전 순)

3. Digit-logs의 경우에는 원래의 순서를 유지한다.

입니다.

 

그래서 접근 방법은 다음과 같습니다.

1. 일단 Digit-logs와 Letter-logs를 분리해줬습니다.

2. Letter-logs의 경우 다시 사전 순으로 sort합니다.

3. Letter-logs와 Digit-logs를 합쳐줍니다.

3. 코드

python3

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        digits = []
        letters = []
        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
       

4. 마치며

영어 문제에 익숙해지는 중 + leetcode 환경에 적응 중인데 재밌네여

'Algorithm > Python' 카테고리의 다른 글

[LeetCode] 5. Longest Palindromic Substring  (1) 2021.06.03
[LeetCode] 49. Group Anagrams  (3) 2021.06.03
[LeetCode] 344. Reverse String  (0) 2021.06.01
[LeetCode] 125. Valid Palindrome  (0) 2021.06.01
[백준 1759] 암호만들기  (1) 2021.05.27