728x90
나의풀이
def reorderLogFiles(self, logs: List[str]) -> List[str]:
s=[]
n=[]
for idx,log in enumerate(logs):
temp=list(log.split(' '))
try:
int(temp[1])
n.append(log)
except:
s.append(log)
# 같은 문자일 경우 식별자에 따라 정렬하는 부분을 못함.
같은 문자일 경우 이를 식별자에 따라 정렬해야하는데 같은 문자임을 알 수 있는 방법에 대하여 파악하지 못함.
풀이
def reorderLogFiles(self, logs: List[str]) -> List[str]:
s=[]
n=[]
for idx,log in enumerate(logs):
temp=list(log.split(' '))
if log.split()[1].isdigit():
n.append(log)
else:
s.append(log)
s.sort(key=lambda x :(x.split()[1:], x.split()[0]))
return s+n
lambda를 사용하돼 [1:]로 표현하여 1번 인덱스 이후로 정렬 후 똑같다면 식별자에 따라 정렬하게함.
lambda 함수를 이용하여 키를 설정할때 split()로 분할 후 인덱스 슬라이싱을 사용할 수 있다는 사실을 알게됨.
반응형
'알고리즘' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰]그룹 애너그램 (0) | 2022.02.18 |
---|---|
[파이썬 알고리즘 인터뷰] 가장 흔한 단어 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 문자열 뒤집기 (0) | 2022.02.14 |
[파이썬 알고리즘 인터뷰] 유효한 팰린드롬 (0) | 2022.02.14 |
[프로그래머스] level1 - 숫자 문자열과 영단어 (0) | 2021.12.11 |