https://school.programmers.co.kr/learn/courses/30/lessons/17686

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


내 풀이

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

 

Sorting HOW TO — Python 3.10.7 documentation

Sorting HOW TO Author Andrew Dalke and Raymond Hettinger Release 0.1 Python lists have a built-in list.sort() method that modifies the list in-place. There is also a sorted() built-in function that builds a new sorted list from an iterable. In this documen

docs.python.org

찾아보면 알겠지만 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

+ Recent posts