Algorithm
[카카오 코테 2018 | python] 파일명 정렬
삐롱K
2025. 6. 23. 18:24
- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17686
- level2
- 문자, 숫자 판별 함수
Q1) 문제를 어떻게 이해했나요?
A1) 파일명은 [HEAD][NUMBER][TAIL] 형태
정렬 기준은 다음과 같아요:
1. HEAD를 대소문자 구분 없이 정렬 (사전 순)
2. HEAD가 같으면 NUMBER를 정수로 비교해 정렬
3. 둘 다 같으면 입력 순서를 유지 (Stable Sort)
Q2) 문제를 어떻게 풀 예정인가요?
A2)
1. 파일명을 HEAD, NUMBER, TAIL로 나누기
2. HEAD는 소문자로 변환해서 비교
3. NUMBER는 정수로 변환해서 비교
4. 정렬 후 원래 문자열 반환
💫 최적화된 코드 (정규표현식 안쓰고, 하나씩 순회하는 방법)
def solution(files):
def split_file(index, file):
head, number, i = '', '', 0
length = len(file)
while i < length and not file[i].isdigit():
head += file[i]
i += 1
while i < length and file[i].isdigit():
number += file[i]
i += 1
return (head.lower(), int(number), index, file) # index 추가!
# 튜플 정렬 → 정렬 기준은 head, number, index 순서
# i = 0
# f = files[0]
for i, f in enumerate(files):
files[i] = split_file(i, f)
# files[i] = (files[i][0], files[i][1], i, files[i][3]) # index 추가
sorted_files = sorted(files)
# 결과에서 파일명만 추출
return [x[3] for x in sorted_files]
함수명 설명 🧸💕
| isdigit() | 문자열이 숫자(0~9)로만 구성됐는지 확인 | '123'.isdigit() → True |
| isalpha() | 문자열이 알파벳(az, AZ)만 포함했는지 확인 | 'abc'.isalpha() → True |
| isalnum() | 알파벳 + 숫자로만 구성됐는지 확인 | 'abc123'.isalnum() → True |
| isspace() | 문자열이 공백 문자(스페이스 등)인지 확인 | ' '.isspace() → True |
| islower() | 문자열이 소문자로만 구성됐는지 확인 | 'abc'.islower() → True |
| isupper() | 문자열이 대문자로만 구성됐는지 확인 | 'ABC'.isupper() → True |
[추천 강의✨]
38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의
현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,
www.inflearn.com
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인
현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.
www.inflearn.com
728x90
반응형