LeetCode : 937

Daehwi Kim·2020년 7월 27일
0

LeetCode

목록 보기
3/23

문제

로그를 재정렬하라. 기준은 다음과 같다.

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

ex)

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"]

내가 푼 풀이

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        reverse_logs = sorted(logs, key= lambda x:(x[0], x[1], x[2]))
        
        
        
        return reverse_logs
  • 리스트안에 있는 단어들을 엇떻게 정렬해야될지 감이 안잡혀서 풀지 못했다.

람다와 + 연산자를 이용한 풀이

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters, digits = [], []
        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
  • isdigit() 함수를 이용하여 문자로그와 숫자로그를 나눈다음에
  • 람다표현식을 이용하여 문자로그를 정렬하고
  • + 연산자를 이용하여 문자로그와 숫자로그를 합친다.

후기

람다 표현식을 잘이용해서 문자문제를 잘 풀 수 있도록 잘 이해보도록 해야겠다.

profile
게으른 개발자

0개의 댓글