[프로그래머스/Python] 파일명 정렬

Sujin Lee·2022년 11월 17일
0

코딩테스트

목록 보기
164/172
post-thumbnail

문제

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

해결 과정

  • tmp: 헤드, 넘버, 테일로 나누어서 넣을 빈 리스트
  • 헤드, 넘버, 테일 빈 문자열로 초기화
  • 파일 하나씩 for문 돌리기
    • 파일의 파일명을 처음부터 확인하다가 숫자라면
      head = file[:i]
      number = file[i:]
    • 넘버를 다시 넘버와 테일로 나누기 위해 for문을 돈다.
      • 넘버 중에서 숫자가 아니라면
        tail = number[j:]
        number = number[:j]
    • tmp에 헤드, 넘버, 테일 순으로 넣고 다시 빈 문자열로 초기화
  • 정렬
    • 사전 순으로 정렬하면 대문자가 먼저 나온다 -> 소문자, 대문자를 구분하지 않아야 하기 때문에 소문자로 바꿔서 정렬한다.
    • 넘버 부분은 숫자로 바꿔서 정렬한다.

풀이

def solution(files):
    tmp = []
    head, number, tail = '', '', ''
    
    for file in files:
        for i in range(len(file)):
            if file[i].isdigit():
                head = file[:i]
                number = file[i:]
                
                for j in range(len(number)):
                    if not number[j].isdigit():
                        tail = number[j:]
                        number = number[:j]
                        break
                tmp.append([head,number,tail])
                head, number, tail = '','',''
                break
    tmp.sort(key = lambda x:(x[0].lower(), int(x[1])))

    return ["".join(i) for i in tmp]
profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글