알고리즘/프로그래머스

2018 KAKAO BLIND RECRUITMENT- 파일명 정렬, 파이썬

그레고리력 2021. 3. 9. 22:06

문제


요구능력


  • 레벨 2
  • 문자열 처리
  • 구현

풀이


  • 어려운 편은 아님
  • files 배열을 돌며 HEAD부분과 숫자 부분, 문자열에 담긴 순서를 뽑아 file_lst에 넣어준다.
  • 문제 요구 조건에 따라 정렬을 해준 후 해당 인덱스에 따라 files에서 문자열을 answer에 저장해준다.
  • 숫자부분을 뽑아내는 while 부분에서 런타임에러가 나지 않도록 주의(파이썬스럽지 않은 코드다, 개선해야겠다)

코드


def is_num(s) :
    if '0' <= s <= '9' :
        return True
    return False

def solution(files):
    file_lst = []
    for idx, file in enumerate(files) :
        for i, c in enumerate(file) :
            if is_num(c) :
                H = file[:i].lower()
                j = 0
                while j+i < len(file) and is_num(file[j+i]) and j <= 5:
                    j+=1
                N = int(file[i:i+j])
                break
        file_lst.append([H,N,idx])
    file_lst.sort()
    answer = []
    for f in file_lst:
        answer.append(files[f[2]])
    return answer