동캄의 코딩도장

프로그래머스 level2 [ [3차] 파일명 정렬] 파이썬 본문

코테/프로그래머스

프로그래머스 level2 [ [3차] 파일명 정렬] 파이썬

동 캄 2021. 12. 9. 20:55

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

 

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

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

programmers.co.kr

#프로그래머스 [3차] 파일명 정렬
def solution(files):
    answer = []
    lst=[]
    for file in files:
        for i in range(len(file)):
            if file[i].isdigit():
                break
        for j in range(5):
            if (i+j)<len(file) and file[i+j].isdigit():
                continue
            else:
                j+=i
                break
        else:
            j=i+5
        s=[file[:i],file[i:j],file[j:]]
        lst.append(s)
    lst.sort(key=lambda x:(x[0].upper(),int(x[1])))
    for val in lst:
        answer.append(''.join(val))
    return answer

lst 객체를 생성하고, file을 하나씩 불러와서 처음으로 숫자가 있는 index값을 i로 저장한다. 그 뒤, j를 5번 반복하며, 문자가 있는지 or 5번을 넘기는지 or 배열이 끝나는지 확인하면서, 각 조건에따라 j값을 수정한다.

결과로 i는 HEAD의 끝 index, j는 Number의 끝 index를 가리킨다.

이점을 기준으로 나누고, lst를 저장후, sort한다.