본문 바로가기
알고리즘

[알고리즘] 파일명 정렬

by keel_im 2021. 5. 4.
반응형

글에 앞서서 1000명 이상 읽어주신 모든 분들에게 감사의 말씀드립니다.

부족한 지식을 보충하고 글을 잘 쓸 수 있는 사람이 되고자 했던 블로그 활동을

벌써 1000분께서 읽어주신 것이 너무나도 신기하네요

누군가가 저의 글을 보고 있다고 생각하니 더 잘 써서 내가 말하고자 하는 내용을

정확하게 알려드리고 싶은 마음이 큽니다.


포인트

  • 문제 자체가 생각보다 심플합니다. 파일명 정렬을 숫자 순으로 하고 싶다가 포인트입니다.
  • 이에 세부 요소로 먼저 HEAD를 사전 순으로 정렬하고
  • 어떠한 길이의 숫자든 같은 숫자를 의미하면 동일한 값으로 생각하고
  • 이 모든 조건들이 동일하다면, 들어온 순서를 유지하는 그런 알고리즘을 짜는 것이 문제입니다. 

🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. 

python

def solution(files: list) -> list:
    answer, vc = [], []
    for line in files:
        index = 0
        for char in line:
            if char.isnumeric():
                break
            index += 1
            # HEAD

        bindex = index
        for char in line[index:]:
            if not char.isnumeric():
                break
            bindex += 1
            # NUMBER
        vc.append([line[:index], line[index:bindex], line[bindex:], len(vc)])
        # 맨 마지막에는 들어온 순서를 저장한다.
        # TAIL

    vc.sort(key=lambda x: (x[0].lower(), int(x[1]), x[3]))
    # 소문자 고려, 어떤 것이 와도 무조건 숫자, 이것이 전부 같을 경우 들어온 순서
    for head, num, tail, index in vc:
        answer.append(head + num + tail)

    return answer
반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 방금그곡  (0) 2021.05.05
[알고리즘] 후보키  (0) 2021.05.05
[알고리즘] N진수 게임  (0) 2021.05.04
[알고리즘] 문자열 압축  (0) 2021.05.03
[알고리즘] Running Sum of 1d Array  (0) 2021.05.03

댓글