자료구조와 알고리즘/🥑알고리즘
[알고리즘][문자열 조작] - 3. 람다와 +연산자를 이용
얄루몬
2022. 2. 16. 21:09
📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님'을 보고 작성되었습니다.
😎문제 : https://leetcode.com/problems/reorder-data-in-log-files/submissions/
[람다와 +연산자를 이용]
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letters, digits = [], []
for i in logs:
if i.split()[1].isdigit():
digits.append(i)
else:
letters.append(i)
letters.sort(key=lambda x:(x.split()[1:], x.split()[0]))
return letters + digits
- logs에 있는 요소들을 꺼내오면 전부 문자로 판단하기 때문에 단어 덩어리로 끊어서 판단을 해주어야 한다.
- 띄어쓰기를 기준으로 숫자인지 문자인지를 판단해서 각 문자, 숫자 리스트에 넣어준다.
- 문자만 있는 경우엔 람다를 이용해 정렬해줄 것이다.
letters.sort(key=lambda x:(x.split()[1:], x.split()[0]))
문자열의 경우 우선 순위에 따라서 정렬하기에 key에 x.split()[1:] 를 넣어주고 우선순위가 같을 경우엔 식별자를 후순위로 넣어 x.split()[0]를 넣어 정렬해준다.- 문자의 경우엔 입력 받은 그대로 출력해주기 위해 다른 정렬은 안 해준다.
- 문자열 숫자 순으로 return 해준다.
[실행 속도 비교]
[컴프리헨션(List Comprehension]
람다 표현식 보다 훨씬 더 간결하고 가독성이 높은 것을 리스트 컴프리헨션이라고 한다.