나의 개발일지

[프로그래머스] Lv.2 [3차] 파일명 정렬 [Python, 파이썬] KAKAO 본문

프로그래머스

[프로그래머스] Lv.2 [3차] 파일명 정렬 [Python, 파이썬] KAKAO

YoonJuHan 2023. 10. 4. 20:15
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17686
  • 🔑 정규식 사용
    • re.search() 함수로 NUMBER 부분을 찾음
    • start() 함수로 NUMBER의 시작 인덱스를 얻음
    • end() 함수로 NUMBER의 끝 인덱스를 얻음
    • 얻은 인덱스로 문자열 슬라이싱 해서  HEAD, NUMBER, TAIL을 구분
    • sort() 함수에 람다 표현식으로 HEAD로 우선 정렬, HEAD가 같다면 같은 애들 중 NUMBER로 정렬
    • lower()로 대소문자 구분 없앰, int로 문자열을 숫자를 정수형 숫자로 비교
    • HEAD, NUMBER, TAIL로 구분한 리스트를 하나의 문자열로 합쳐서 정답 리스트에 반환

 

import re

def solution(files):
    answer = []
    
    div = []
    
    for i in files:
        x = re.search("[0-9]{1,5}", i)
        st = x.start()
        ed = x.end()
        div.append([i[:st], i[st:ed], i[ed:]])

    div.sort(key=lambda x : (x[0].lower(), int(x[1])))

    for i in div:
        answer.append("".join(i))
    
    
    return answer
Comments