https://school.programmers.co.kr/learn/courses/30/lessons/17686
코드 & 풀이
import re
def solution(files):
cuted_files = []
for i, file in enumerate(files):
cuted_file = re.findall(r'[^0-9]+|\d+',file) #문자와 숫자를 기준으로 분리
HEAD = cuted_file[0].lower() # HEAD 소문자, 대문자 구분없으니까 다 소문자로
NUMBER = int(cuted_file[1]) # Number
cuted_files.append([i, HEAD, NUMBER])
cuted_files = sorted(cuted_files, key=lambda x : (x[1], x[2]))
return [files[file[0]] for file in cuted_files]
정규식을 통해 문자와 숫자를 기준으로 주어지는 문자열을 분리하고
인덱스, HEAD, NUMBER를 저장해두어
HEAD => NUMBER 순으로 정렬을 진행합니다.
그리고 정렬된 리스트에서 원래 인덱스를 받아와서 출력하면 끝입니다.
처음에
정규식을 [a-zA-Z-] 이런 식으로 하니까
컴파일 에러가 나와서
HEAD에는 숫자는 안나온다길래
[^0-9]로 바꾸니 잘 작동 됐습니다.
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
미로 탈출 - Python, BFS (0) | 2024.12.29 |
---|---|
숫자 카드 나누기 - Pyton, GCD, Reduce (0) | 2024.12.29 |
시소 짝꿍 - Pyton, (0) | 2024.12.24 |
호텔 대실 - Pyton, 구현, 누적합, 스위핑(Sweeping), 힙(heap) (0) | 2024.12.22 |
124 나라의 숫자 - 구현, 수학(?) (1) | 2024.12.20 |