S E P H ' S

[Python] 파일명 정렬 본문

Algorithm/Programmers

[Python] 파일명 정렬

yoseph0310 2021. 8. 25. 23:37
 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램

programmers.co.kr

문제 보기

SK C&C 코테전에 이 문제를 봤더라면.. 풀었을 수 있었을 것 같다.

파이썬 정렬이 아직도 익숙치 않은걸 보니 더 많이 경험을 쌓아야 할 것 같다.

풀이

1. head, number, tail 세 부분으로 나눠지는 기준은

    1-1. number가 나오기 전 까진 head이다.

    1-2. number 뒤에 바로 숫자가 나오면 아직 number이다. tail에서 숫자가 나올 수도 있다고 했지만 적어도 문자나 공백 뒤에 올 것임.

 

2. 1의 기준으로 head, number, tail로 나눈 후, answer에 append.

3. answer를 sort 하는데 문제의 정렬 조건대로

    3-1. head는 사전순으로 정렬. 대소문자 구별은 안함.

    3-2. number는 int형으로 변환하고 오름차순 정렬.

    3-3. tail은 입력 그대로.

 

def sol(files):
	answer = []
    
    for f in files:
    	head, number, tail = '', '', ''
        number_check = False
        
        for i in range(len(f)):
        	if f[i].isdigit():
            	number += f[i]
                number_check = True
            elif not number_check:
            	head += f[i]
            else:
            	tail = f[i:]
                break
        answer.append((head, number, tail))
    answer.sort(key=lambda x: (x[0].upper(), int(x[1])))
    
    return [''.join(w) for w in answer]

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 방금그곡  (0) 2021.08.26
[Python] 압축  (0) 2021.08.26
[Python] 124 나라의 숫자  (0) 2021.08.25
[Python] 소수 찾기  (0) 2021.08.25
[Python] 가장 큰 정사각형 찾기  (0) 2021.08.24