Programming/leetcode
937. Reorder Data in Log Files
홍열
2021. 1. 21. 10:18
728x90
- 주어진 데이터에서 문자데이터와 숫자데이터를 구분하는 문제
- 맨앞에 문자 데이터/숫자 데이터에 따라서 구분자가 주어짐(let, dig)
- 문자 데이터는 구분자를 제외하고, 사전순으로 정렬하되, 같을 경우에는 구분자순서로 정렬
- 숫자데이터는 들어온 순서대로 출력
- 풀이
def reorderLogFiles(logs) -> [str]:
let, dig = [], []
for item in logs:
#"dig1 8 1 5 1", "let1 art can"을 구분하는 방법
# dig1과 let1로 구분해도 되지만, 어차피 숫자log는 뒤에 숫자만 나옴
# 따라서 짤라봐서 배열 1번이 숫자면 숫자에 넣고, 그렇지 않으면 문자에 넣자
if item.split(' ')[1].isalpha():
let.append(item)
else:
dig.append(item)
# 문제 조건에 letter는 구분자를 제외하고 사전순 정렬이고, 같을 경우에만 구분자 이용
# 숫자 배열은 입력 그대로 출력
# list sort시에 key값을 주고, 들어온 값을 split 구분자 이후의 값으로 정렬하고([1:])
# 모두 같을 경우에는 구분자를 비교
let.sort(key=lambda x:(x.split(' ')[1:],x.split(' ')[0]))
return let+dig
print(f'{reorderLogFiles(["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"])}')