https://school.programmers.co.kr/learn/courses/30/lessons/17686
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드 & 풀이
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' 카테고리의 다른 글
2025 프로그래머스 코드챌린지 1차 예선 > 비밀 코드 해독 - Python, Combinations, & 연산 (0) | 2025.02.14 |
---|---|
2025 프로그래머스 코드챌린지 1차 예선 > 지게차와 크레인 - Python, BFS (0) | 2025.02.12 |
미로 탈출 - Python, BFS (0) | 2024.12.29 |
숫자 카드 나누기 - Pyton, GCD, Reduce (0) | 2024.12.29 |
시소 짝꿍 - Pyton, (0) | 2024.12.24 |