코딩테스트 연습 - [3차] 파일명 정렬 | 프로그래머스 스쿨 (programmers.co.kr)
모범 답안
import re
def splitS(s):
head = re.match('[\D]+', s)
number = re.search('[0-9]+', s)
file = [head[0], int(number[0]), s[number.end():]]
return file
def solution(files):
newFile = []
for i, file in enumerate(files):
s_file = splitS(file.lower())
s_file.append(i)
newFile.append(s_file)
newFile.sort(key = lambda x : (x[0], x[1], x[-1]))
answer = list(map(lambda x : files[x[-1]], newFile))
return answer
s[number.end():] → s[숫자가 끝나는 지점부터의 인덱스]
s = img12.png 일 때, number.end() = 5
따라서 s[number.end():] = .png
import re
def solution(files):
a = sorted(files, key=lambda file : int(re.findall('\d+', file)[0]))
b = sorted(a, key=lambda file : re.split('\d+', file.lower())[0])
return b
import re
def solution(files):
return sorted(files, key=lambda file: (find_head_and_number(file)))
def find_head_and_number(file):
head, number, tail = re.match("([a-zA-Z-. ]+)(\d{1,5})(.*)", file).groups()
return [head.lower(), int(number)]
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 1단계 / 신고 결과 받기 / python / 2022 KAKAO BLIND RECRUITMENT (0) | 2024.03.13 |
---|---|
Programmers / 2단계 / 배달 / python / Summer/Winter Coding(~2018) (0) | 2024.03.13 |
Programmers / 2단계 / 스킬트리 / python / Summer/Winter Coding(~2018) (0) | 2024.03.11 |
Programmers / 2단계 / 오픈채팅 / python / 2019 KAKAO BLIND RECRUITMENT (0) | 2024.03.09 |
Programmers / 해시 문제 모음 (0) | 2024.03.09 |