3. Reorder Data in Log Files

아현·2021년 3월 6일
0

Algorithm

목록 보기
4/400

리트코드



<기준>

  1. 로그의 가장 앞 부분은 식별자다.
  2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
  3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
  4. 숫자 로그는 입력 순서대로 한다.


람다와 + 연산자 이용


class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters, digits = [], []
        
        #숫자는 digits에 문자면 letters에 
        
        for log in logs:
            if log.split()[1].isdigit():
                digits.append(log)
            else: letters.append(log)
            
         #람다 표현식으로 2개의 키를 정렬
    
        letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
        return letters + digits
        
        
  • isdigit()을 이용해서 숫자 여부인지를 판별해 구분 (문자와 숫자를 구분하고, 숫자는 나중에 그대로 이어 붙인다.)

➕ 람다 표현식

  • 식별자 없이 실행 가능한 함수, 함수 선언 없이도 하나의 식으로 함수를 단순하게 표현할 수 있다.

  • 위 예제에서는 문자 순 정렬을 원하며, 문자가 동일한 경우에만 그 앞번호순으로 정렬되는 형태를 희망한다. 이 때 리스트의 가가 요소를 풀어서 별도 처리를 해줘야하는데, 이럴 때 람다 표현식을 사용할 수 있다.

>>> def func(x):
		return x.split()[1], x.split()[0]
    
>>>    s.sort(key=func)
    
>>>    s
    
 
 letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))



➕ sort 함수의 key

(https://wayhome25.github.io/python/2017/03/07/key-function/)

profile
For the sake of someone who studies computer science

0개의 댓글