(MEDIUM) LeetCode No.937 - Reorder Data in Log Files 풀러가기
교재에는 별 한 개짜리로 난이도가 쉽다고 표현함. 그러나 Leetcode에는 Medium으로 표기되어 있다.
교재에는 딱 한 가지 코드가 있었다. 정답을 보진 않았지만, 몇 가지 내용을 참고하면서 1시간 54분만에 풀어냈다. Python에서 Lambda가 어떻게 쓰이는지 이해하는데 오래걸렸다...
a = [1, 2, 3]
b = ['a', 'b', 'c']
a + b
> [1, 2, 3, 'a', 'b', 'c']
b + a
> ['a', 'b', 'c', 1, 2, 3]
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
#식별자 별로 구분하기 위해 각각 리스트를 생성
letters: List[str] = []
digits: List[str] = []
# input log데이터에서 식별자 다음이 숫자인지, 문자인지 구분하여 각각 리스트에 담는다.
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

아직은 모르는 게 많아 교재를 통해 배우고 있는 중이다. 이번 문제는 필요한 함수와 람다 정도만 확인했는데 결과적으로 교재에서 제공해주는 정답과 동일하게 나왔다.
다만 교재의 입력과 출력 예시가 1개 밖에 나오지 않아 코드를 제출했을 때, 다른 테스트에서 많이 걸려서 여러차례 수정을 거듭했다. 문제를 제대로 읽었으면 단순히 출력만 잘나오게 코드를 짜지 않았을텐데 바보같았다.
첫 Medium 레벨을 풀게 되다니 !