파일명 정렬
코딩테스트 연습 - [3차] 파일명 정렬
파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램
programmers.co.kr
- 다른 사람 풀이
- head, number, tail 나눠서 문자열로 저장
- 여러 문자열을 리스트에 하나의 튜플로 저장: answer.append((head, number, tail))
- head는 모두 대문자로 생각하고 정렬, number는 int로 계산해서 정렬
- 값의 변경 없이 sort에서 key값에 넣으면서 정렬 특징만 부여 가능
- answer.sort(key=lambda x: (x[0].upper(), int(x[1])))
- head 우선, number 차선으로 정렬
def solution(files):
answer = []
for f in files:
head, number, tail = '', '', ''
number_check = False
for i in range(len(f)): # 문자열 자르기
if f[i].isdigit(): # 처음 나오는 숫자부터는 NUMBER로
number += f[i]
number_check = True
elif not number_check: # NUMBER가 나오기 전까지는 HEAD
head += f[i]
else: # NUMBER가 이미 나왔고, 숫자가 아닌 문자가 나오면 TAIL
tail = f[i:]
break
answer.append((head, number, tail)) # HEAD, NUMBER, TAIL 하나의 튜플로 저장
answer.sort(key=lambda x: (x[0].upper(), int(x[1]))) # HEAD 우선, NUMBER 차선으로 정렬
return [''.join(t) for t in answer] # 원래 형태로 문자열 만들어서 반환
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][Level 2] 영어 끝말잇기 (0) | 2022.06.15 |
|---|---|
| [프로그래머스] [Level 2] N-Queen(백트래킹) (0) | 2022.06.11 |
| [프로그래머스] [Level 2] [다이나믹 프로그래밍] 멀리 뛰기 (0) | 2022.06.01 |
| [프로그래머스] [Level 2] [스택/큐] 다리를 지나는 트럭 (0) | 2022.05.27 |
| [프로그래머스] [Level 2] 큰 수 만들기 (0) | 2022.05.11 |