STUDY/Algorithm

[프로그래머스] [3차] 파일명 정렬 python

sinawi95 2021. 4. 1. 17:19
728x90

테스트 준비로 있어서 오랜만에 프로그래머스를 풀었다.

programmers.co.kr/learn/courses/30/lessons/17686

 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램

programmers.co.kr

def solution(files):
    answer = []
    
    # 1
    files_tmp = []
    for i in range(len(files)):
        tmp = files[i]
        ns, ne = 0, 0 # number의 첫부분과 끝부분 찾음
        for j in range(len(tmp)):
            if tmp[j].isdigit():
                ne += 1
                if not ns:
                    ns = j
            else:
                if ns:
                    break
        ne += ns
        files_tmp.append((tmp[:ns], tmp[ns:ne], tmp[ne:]))
        
    # 2
    files_tmp.sort(key=lambda x:(x[0].lower(),int(x[1])))
    for i in range(len(files_tmp)):
        tmp = files_tmp[i][0]+files_tmp[i][1]+files_tmp[i][2]
        answer.append(tmp)
    return answer

이 코드를 두 부분으로 나눌수있다.

모든 파일이름을 head/number/tail 로 나누는 부분과 정렬을 사용하는 부분

첫번째 부분에서  조심해야하는건 tail 부분이 없는 경우인데 이거 찾느라 애썼다.

두번째 정렬은 그냥 lambda를 사용해서 쉽게 해결하였다.