데이터사이언스 기록기📚

[프로그래머스/Python] Level 2_[3차] 파일명 정렬(2018 KAKAO BLIND RECRUITMENT) 본문

Coding Test/프로그래머스(Python)

[프로그래머스/Python] Level 2_[3차] 파일명 정렬(2018 KAKAO BLIND RECRUITMENT)

syunze 2023. 5. 17. 15:46

📌문제 유형

2018 KAKAO BLIND RECRUITMENT(구현, 정렬) 

 

📌문제

 

프로그래머스

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

programmers.co.kr

 

📌나의 문제풀이

- 구현, 정렬

  • 숫자 아닌 앞 부분 head에 넣기
  • 숫자 부분 number에 넣기
  • 이외 tail에 넣기
  • sort_files에 head, number, tail, 원래 파일명 넣기
  • 정렬 후 원래 파일명 출력 
def solution(files):
    answer = []
    sort_files = []
    
    for i in range(len(files)):
        head, number, tail = '','',''
        for j in range(len(files[i])):
            if files[i][j].isdigit() == False and number == '':
                head += files[i][j].lower()
            elif files[i][j].isdigit() and tail == '':
                number += files[i][j]
            else:
                tail += files[i][j]
        sort_files.append([head, int(number), tail, files[i]])
    sort_files.sort(key = lambda x:(x[0],x[1]))
    
    for k in range(len(sort_files)):
        sort_files[k] = sort_files[k][3]
        
    return sort_files

 

📌다른 사람의 문제풀이

-  정규 표현식 이용

  • match() : 문자열의 앞 부분이 매치되는가 체크 후 추출 
import re

def solution(files):

    def key_function(fn):
        head,number,tail = re.match(r'([a-z-. ]+)(\d{,5})(.*)',fn).groups()
        return [head,int(number)]

    return sorted(files, key = lambda x: key_function(x.lower()))

 

📌리뷰

- 정규표현식 re.match() : 문자열의 앞 부분이 매치되는가 체크

 

[python] Python 정규표현 모듈 re 사용법 (match, search, sub등)

Python에서는 정규표현 처리를 하기 위해 표준 라이브러리인 re 모듈을 사용한다. 정규표현 패턴를 이용한 문자열의 추출이나, 치환, 분할 등이 가능하다. 이번 포스팅에서는 먼저 re모듈의 함수나

engineer-mole.tistory.com

- 정규표현식 관련 식

 

08-2 정규 표현식 시작하기

[TOC] ## 정규 표현식의 기초, 메타 문자 정규 표현식에서 사용하는 메타 문자(meta characters)에는 다음과 같은 것이 있다. > 메타 문자란 원래 그 문자…

wikidocs.net

 

728x90
Comments