Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 2018 카카오 BLIND RECRUITMENT - 파일명 정렬 본문
728x90
programmers.co.kr/learn/courses/30/lessons/17686
[ 알고리즘 ]
구현
[문제 접근]
문자열을 잘 다루느냐와 정렬을 할 수 있는지가 이문제의 관건이라고 생각한다.
1. 문제에서 대소문자를 고려하지 않기 때문에, 처음부터 모두 소문자로 바꿔주고 시작
2. 파이썬 정규표현식 re를 이용하여 HEAD 부분과 NUMBER 부분을 나누어주었다. 이때 TAIL 부분은 정렬에 고려하지 않아도되므로 정렬에 고려해야할 대상인 index 를 넣어줌
3. 문제에 나온 우선 순위를 고려하여 정렬
[코드]
import re
def solution(files):
answer = []
filtering=[]
for i in range(len(files)):
file=files[i]
List=[]
#모두 소문자로 바꾸기
file=file.lower()
#Head
p1=re.compile('[^0-9]+')
head=p1.findall(file)[0]
List.append(head)
#number
p2=re.compile('[0-9]{1,5}')
number=p2.findall(file)[0]
List.append(number)
#tail 대신 index 저장 (순서 기억을 위해)
List.append(i)
filtering.append(List)
filtering=sorted(filtering,key=lambda x:int(x[1]))
filtering=sorted(filtering,key=lambda x:x[0])
for a,b,index in filtering:
answer.append(files[index])
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 2019 카카오 BLIND RECRUITMENT - 오픈 채팅방 (0) | 2021.02.24 |
---|---|
[Python] 2018 카카오 BLIND RECRUITMENT- 뉴스 클러스터링 (0) | 2021.02.24 |
[Python] 2020 카카오 인턴 기출 - 수식 최대화 (0) | 2021.02.22 |
[Python] 2021 카카오 BLIND RECRUITMENT - 메뉴 리뉴얼 (0) | 2021.02.20 |
[Python] 프로그래머스 Lv.2 - 큰 수 만들기 (0) | 2021.02.20 |
Comments