접근 방식(알고리즘 분류)
- 문자열 문제
내 풀이
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] # 원래 형태로 문자열 만들어서 반환
풀이 설명
- 숫자를 기준으로 slicing을 이용해서 head, number, tail을 구분한다.
- 그 다음 람다를 이용해서 정렬한다.
- 정렬한후 .join함수를 이용해서 문자열로 바꿔준다.
느낀점
- 나는 정렬문제만 나오면 heapq를 사용하려고 하는 것 같다. 다음부터는 lambda를 최우선으로 생각해야겠다.
- lambda를 사용할때 단순 정렬이 아니라 .upper나 int()함수를 취해줘도 원래 값에는 영향을 미치지 않고 정렬조건을 줄 수 있다는 것을 배웠다.
'알고리즘' 카테고리의 다른 글
점프와 순간이동 (0) | 2022.02.26 |
---|---|
프로그래머스 이진트리 문제 (0) | 2022.02.26 |
프로그래머스 여행경로 문제 (0) | 2022.02.26 |
프로그래머스 스타수열 문제 (0) | 2022.02.26 |
프로그래머스 보석쇼핑 문제 (0) | 2022.02.26 |