2020년/코테
[파이썬 알고리즘 인터뷰] 로그파일 재정렬
위지원
2020. 12. 19. 10:03
github.com/onlybooks/algorithm-interview
블로그를 🌸단장하고 나니 아침부터 포스팅하고싶어졌다 ~~😄😍😍😄
로그파일이 들어올 때, 조건에 맞게 재정렬하는 코드를 설계하라. 조건은 다음과 같다.
1. 로그의 가장 앞 부분은 식별자
2. 문자로 구성된 로그가 숫자 로그보다 앞에
3. 식별자는 순서에 영향을 끼치지않지만 동일 문자의 경우 식별자 순으로 함
4. 숫자 로그는 입력순으로
log=["dig1 8151","let1 art can"..]
1. 람다+연산자 이용하기
2번 조건을 isdigit()을 이용하여 해결할 수 있다.
if log.split()[1].isdigit():
digits.append(log)
else:
leftters.append(log)
# 아 이부분 코드 이해가 안갔는데, 그럼 조건에 하나가 더 추가되어야 했던거 아닌가..
# 식별자를 제외한 나머지 문자도 순서대로 정렬하라. 라는
letters.sort(key=lambda x:(x.split()[1:], x.split()[0]))
return letters + digits
Reorder Data in Log Files - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
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
프로그래머스에서 정렬문제가 있다.
코딩테스트 연습 - 문자열 내 마음대로 정렬하기
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1
programmers.co.kr
def solution(strings, n):
return strings.sort(key=lambda x:(x[n],x))