알고리즘
                
              프로그래머스 파일명 정렬 문제
                채마스
                 2022. 2. 26. 01:10
              
                          
            

접근 방식(알고리즘 분류)
- 문자열 문제
내 풀이
def solution(files):
    answer = []
    for f in files:
        head, number, tail = '', '', ''
        number_check = False
        for i in range(len(f)): # 문자열 자르기
            if f[i].isdigit():  # 처음 나오는 숫자부터는 NUMBER로
                number += f[i]
                number_check = True
            elif not number_check:  # NUMBER가 나오기 전까지는 HEAD
                head += f[i]
            else:               # NUMBER가 이미 나왔고, 숫자가 아닌 문자가 나오면 TAIL
                tail = f[i:]
                break
        answer.append((head, number, tail))  # HEAD, NUMBER, TAIL 하나의 튜플로 저장
    answer.sort(key=lambda x: (x[0].upper(), int(x[1])))  # HEAD 우선, NUMBER 차선으로 정렬
    return [''.join(t) for t in answer]   # 원래 형태로 문자열 만들어서 반환풀이 설명
- 숫자를 기준으로 slicing을 이용해서 head, number, tail을 구분한다.
- 그 다음 람다를 이용해서 정렬한다.
- 정렬한후 .join함수를 이용해서 문자열로 바꿔준다.
느낀점
- 나는 정렬문제만 나오면 heapq를 사용하려고 하는 것 같다. 다음부터는 lambda를 최우선으로 생각해야겠다.
- lambda를 사용할때 단순 정렬이 아니라 .upper나 int()함수를 취해줘도 원래 값에는 영향을 미치지 않고 정렬조건을 줄 수 있다는 것을 배웠다.