728x90
문제: 로그를 재정렬하라 . 기준은 다음과 같다
1. 로그의 가장 앞 부분은 식별자
2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다.
4. 숫자 로그는 입력 순서대로 한다.
예제:
Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
Explanation:
The letter-log contents are all different, so their ordering is "art can", "art zero", "own kit dig".
The digit-logs have a relative order of "dig1 8 1 5 1", "dig2 3 6".
Input: logs = ["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]
Output: ["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]
솔루션:
- 람다와 + 연산자를 이용
def reorderLogFiles(self, logs : List[str]) -> List[str]:
letters, digits = [], [] # 숫자 로그, 문자 로그
for log in logs:
if log.split()[1].isdigit(): # isdigit()을 이용하여 숫자 여부를 판단
digits.append(log)
else:
letters.append(log)
letters.sort(key = lambda x: (x.split()[1:], x.split()[0])) # 2개의 키를 람다식으로 표현
return letters+digits
문제 출처 : https://leetcode.com/problems/reorder-data-in-log-files/
'알고리즘 공부 > 파이썬 알고리즘 인터뷰' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 - 자료형 (0) | 2022.01.22 |
---|---|
파이썬 알고리즘 인터뷰를 통한 팁 (0) | 2022.01.20 |
04 가장 흔한 단어(Most common words) (2) | 2022.01.10 |
02 문자열 뒤집기(Reverse string) (0) | 2022.01.10 |
01 유효한 팰린드롬 (Valid Palindrome) (0) | 2022.01.10 |