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))