티스토리 뷰

728x90
반응형

문제

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

 

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

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

programmers.co.kr

 

코드

def solution(files):
    answer = []
    for i in files:
        HEAD, NUMBER, TAIL = '','',''
        number_check = False
        for j in range(len(i)):
            if i[j].isdigit():
                NUMBER += i[j]
                number_check = True
            elif not number_check:
                HEAD += i[j]
            else:
                TAIL += i[j:]
                break
        answer.append((HEAD, NUMBER, TAIL))
    answer.sort(key=lambda x: (x[0].upper(), int(x[1])))  # HEAD 우선, NUMBER 차선으로 정렬
    return [''.join(t) for t in answer]

isdigit() 함수를 이용해 문자열 구성이 숫자인지 확인하여 숫자일 경우에는 NUMBER에 더해주고 number_check를 True로 바꿔준다.

 

number_check가 False일 경우에는 문자열이 숫자가 아니고 NUMBER가 나오기 전이기 때문에 HEAD에 더해준다

 

number_check가 True이고 NUMBER다음이면 모두 TAIL에 넣어준다.

 

lambda를 사용해 HEAD를 기준으로 정렬해주고 HEAD가 같을 경우에는 NUMBER를 기준으로 정렬해준다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31