[프로그래머스-String] 파일명 정렬

CHOI YUN HO·2021년 4월 12일
0

알고리즘 문제풀이

목록 보기
24/63

📃 문제 설명

파일명 정렬

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

주어진 문자열을 주어진 조건에 맞게 잘라주면 된다.

나는 우선 flagisdigt()을 사용하여, 처음으로 등장하는 숫자까지를 잘라서 HEAD로 저장하고,

그 다음 다시 알파벳이 나올 때 까지를 잘라서 NUMBER로 저장하고 나머지를 TAIL로 저장한다. 근데 이 때 TAIL은 아무 글자도 없을 수 있기 때문에, 예외처리를 해준다.

이렇게 HEAD, NUMBER, TAIL로 나누어서 저장을 했으면,
sort와 lambda식을 이용하여 정렬해주면 끝!

👨‍💻 소스 코드

def solution(files):
    answer = []

    for file in files:
        flag = True
        startNum = 0
        tmp = []
        for i in range(len(file)):
            if flag and file[i].isdigit():
                tmp = [file[:i]]
                startNum = i
                flag = False
            if not flag:
                if not file[i].isdigit():
                    tmp.append(file[startNum:i])
                    tmp.append(file[i:])
                    break
                elif i == len(file) - 1:
                    tmp.append(file[startNum:])
                    break
        answer.append(tmp)

    answer.sort(key=lambda x: (x[0].lower(), int(x[1])))
    return [''.join(a) for a in answer]
profile
가재같은 사람

0개의 댓글