728x90
테스트 준비로 있어서 오랜만에 프로그래머스를 풀었다.
programmers.co.kr/learn/courses/30/lessons/17686
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를 사용해서 쉽게 해결하였다.
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] 두개 뽑아서 더하기 python, C (0) | 2021.04.02 |
---|---|
[프로그래머스] [3차] n진수 게임 python (0) | 2021.04.01 |
[백준] 5427 불 python (0) | 2021.03.31 |
[백준] 2206 벽부수고 이동하기 python (0) | 2021.03.30 |
[백준] 7562 나이트의 이동 python (0) | 2021.03.29 |