STUDY/Algorithm
[프로그래머스] [3차] 파일명 정렬 python
sinawi95
2021. 4. 1. 17:19
728x90
테스트 준비로 있어서 오랜만에 프로그래머스를 풀었다.
programmers.co.kr/learn/courses/30/lessons/17686
코딩테스트 연습 - [3차] 파일명 정렬
파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램
programmers.co.kr
def solution(files):
answer = []
# 1
files_tmp = []
for i in range(len(files)):
tmp = files[i]
ns, ne = 0, 0 # number의 첫부분과 끝부분 찾음
for j in range(len(tmp)):
if tmp[j].isdigit():
ne += 1
if not ns:
ns = j
else:
if ns:
break
ne += ns
files_tmp.append((tmp[:ns], tmp[ns:ne], tmp[ne:]))
# 2
files_tmp.sort(key=lambda x:(x[0].lower(),int(x[1])))
for i in range(len(files_tmp)):
tmp = files_tmp[i][0]+files_tmp[i][1]+files_tmp[i][2]
answer.append(tmp)
return answer
이 코드를 두 부분으로 나눌수있다.
모든 파일이름을 head/number/tail 로 나누는 부분과 정렬을 사용하는 부분
첫번째 부분에서 조심해야하는건 tail 부분이 없는 경우인데 이거 찾느라 애썼다.
두번째 정렬은 그냥 lambda를 사용해서 쉽게 해결하였다.