[Python] 프로그래머스 - 파일명 정렬
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17686
2018 카카오 블라인드 코딩테스트에 출제된 문제이다.
# 문제가 복잡해보이고 정렬해야 할 것도 많아보이지만, head와 number만 잘 파싱해서
추출한 다음 정렬하면 되는 문제이다.
# 카카오는 re모듈을 이용해 문자열을 파싱하는 문제가 많이 나오는 것 같다.
import re
def solution(files):
answer = []
file = []
for idx, i in enumerate(files):
# findall함수를 사용해 파일명 중 숫자부분을 추출한다.
number = re.findall("\d+", i)
# 숫자의 첫글자가 나오기 전까지는 HEAD부분이므로 head에 HEAD부분을 소문자로 변경하여 넣는다.
head = i[:i.index(number[0])].lower()
# file배열에 [head, number, idx]를 append해준다. (idx는 현재 파일명의 인덱스)
file.append([head, int(number[0]), idx])
# file을 head순으로 먼저 정렬하고 같으면 number순으로 정렬한다. (이미 입력받은 순서는 유지중)
file.sort(key = lambda x: (x[0], x[1]))
# files의 정렬된 인덱스에 해당하는 파일명을 answer에 넣고 출력한다.
for i in file:
answer.append(files[i[2]])
return answer
(프로그래머스 level: 2)
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 가장 큰 수 (0) | 2021.05.23 |
---|---|
[Python] 프로그래머스 - n진수 게임 (0) | 2021.05.22 |
[Python] 프로그래머스 - 압축 (0) | 2021.05.21 |
[Python] 프로그래머스 - 방금그곡 (0) | 2021.05.20 |
[Python] 프로그래머스 - 영어 끝말잇기 (0) | 2021.05.16 |
TAGS.