Reorder LogFiles
logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
문자로만 구성된 로그들이 앞에 와야함
let1 art can 다음 dig1 8 1 5 1
문자로만 구성된 로그끼리는 art can, own kit dig 을 가지고 비교해서 알파벳 순으로 정렬함
art can, art zero 처럼 맨처음 시작하는 문자가 같으면 let1, let3 을 비교해서 let1 → let3 이 되도록 정렬함
일차적으로 숫자 로그 , 문자로그를 분할함
타입을 검사하지 않고 실제 숫자인지 isdigit() 을 통해 확인함
sorted 를 통해 문자로만 구성된 로그 정렬
javascript 와 달리 어떤걸 기준으로 정렬할 건지를 argument 에 넣어주면 됨
sorted() 에 아무것도 안넣으면 오름차순으로 정렬함
list 에 딕셔너리가 있는 json 같은 경우 특정 key 를 기준으로 정렬할 수 있다.
아래 예시를 보면 일차적으로 id 를 기준으로 오름차순 정렬하지만 만약 id 가 같을 경우
2차 키로 name 을 기준으로 정렬한 결과를 리턴한다.
sample =[
{"id":1,"name":"a"},
{"id":2,"name":"f"},
{"id":2,"name":"c"},
{"id":2,"name":"b"}
]
print("before",sample)
sample.sort(key = lambda x:(x["id"],x["name"]))
print("after",sample)
python 에서는 두개의 list 를 합쳐서 하나의 list 를 만들 때 단순히 + 해주면 된다.
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)
return sorted(letters,key = lambda x:(x.split()[1:],x.split()[0]) )+digits
Author And Source
이 문제에 관하여(Reorder LogFiles), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rud285/Reorder-LogFiles저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)