https://school.programmers.co.kr/learn/courses/30/lessons/17686
내 풀이
import re
def solution(files):
target = '([0-9]+)'
# test= [(1,i) for i in range(0,100)]
# test = sorted(test,key = lambda x:x[0])
# print(test)
temp = [re.split(target,s) for s in files]
sort = sorted(temp, key = lambda x: (x[0].lower(), int(x[1])))
return [''.join(s) for s in sort]
문제를 풀면서 조금 신경쓰였던 부분이 안정 정렬 부분이였다. 안정 정렬에 관한 내용을 분명 배웠고 무슨 내용인지는 아는데
파이썬에서 기본적으로 제공하는 sorted 와 sort가 안정정렬인지에 관하여 확신을 할 수 없었다.
그래서 그냥 실험으로 확인해보았다(주석부분). 그 후에 이 부분에 관하여 궁금하여 공식문서를 찾아았다
https://docs.python.org/3/howto/sorting.html
찾아보면 알겠지만 stable하다고 나온다.
문제에서 요구하는 조건은 총 3가지인데
일전에 텐서플로우를 공부할 때 배웠던 정규식으로 풀어보았다.
target을 기준으로 나누는데
타겟의 조건은 0부터 9까지 즉 숫자가 존재하는지 여부이다. 뒤에 +는 반복인데 1번이상 나올때만 체크된다.
긍까 숫자가 한자리 숫자만 나오는게 아니라 여러자리 숫자가 나올 수 있기 때문에 +는 넣어줘야한다.
이후에 정렬 해주는데 기준을 두가지로 정렬해준다. 첫번째는 head를 lower()로 바꿔서, 두번째는 숫자를 기준으로
어렵지 않은 문제였는데 정규식이 아니였다면 엄청나게 돌아갔을거 같기도 한 문제이다.
다른사람의 풀이
'취준 > 프로그래머스' 카테고리의 다른 글
롤케이크 자르기 - 파이썬 (0) | 2022.11.02 |
---|---|
2개 이하로 다른 비트 - 파이썬 (0) | 2022.10.17 |
n^2 배열 자르기 - 파이썬 (0) | 2022.10.11 |
방문 길이 - 파이썬 (1) | 2022.10.05 |
야근 지수 - 파이썬 (0) | 2022.09.13 |