整列プログラム[3]ファイル名
3226 ワード
🙂 質問-ココ[1回目]シャトルバス
url : https://programmers.co.kr/learn/courses/30/lessons/17686?language=python3
勘定科目の問題の内容
3回のコードテストと2回の面接に合格し、長時間の点字公開に無事合格し、ココア社に入社した武智はファイルストレージサーバの管理を担当した.
リポジトリ・サーバには、プログラムのすべての過去のバージョンが含まれているため、名前順のファイル・リストは表示しにくい.ファイルを名前でソートするとver-10が作成されます.zipはver-9です.zipより先に表示されるからです.
バージョン番号を除いて、数値を含むファイルリストは多くの点で管理しにくい.例えば、ファイルリストが[「img 12.png」、「img 10.png」、「img 2.png」、「img 1.png」、「img 10.png」、「img 12.png」、「img 2.png」の場合、数字順の[「img 1.png」、「img 2.png」、「img 10.png」、「img 12.png」、「img 12.png」、「img 12.png」の場合、自然な順序で並べられたファイルリストはずっと多い.
無知は、単純な文字コード順ではなく、ファイル名に含まれる数字に基づいてソート機能をリポジトリ管理プログラムで実現することを決定します.
ソース・ファイル・リポジトリに格納されるファイル名は、英字大文字、数字、スペース(")、ピリオド(".")、マイナス記号("-")で構成されています.ファイル名はアルファベットで始まり、1つ以上の数字が含まれます.
ファイル名は、HEAD、NUMBER、TAILの3つの部分で構成されています.
👇 入力フォーマット
入力として、整列ファイルを与えます.
👆出力フォーマット
上記標準出力で並べ替えます.
🖐解答方法
📃 CODE
def make_data(file,i):
head =''
number =''
count = 0
tail = ''
for idx in range(len(file)):
if count ==0 and (file[idx] <'0' or file[idx]>'9'):
head+=file[idx]
elif count <5 and (file[idx] >='0' and file[idx]<='9'):
number +=file[idx]
count+=1
else:
tail = file[idx:]
break
return (head,number,i,tail)
def solution(files):
answer = []
change_data = []
for idx in range(len(files)):
change_data.append(make_data(files[idx],idx))
sorted_data = sorted(change_data,
key = lambda x:(x[0].lower(),int(x[1]),x[2]))
for i in sorted_data:
answer.append(i[0]+i[1]+i[3])
return answer
11他の人の注釈の参考になる内容
python libarayのreを使用して文字抽出を行い、より短く、より容易に解読できます.
Reference
この問題について(整列プログラム[3]ファイル名), 我々は、より多くの情報をここで見つけました https://velog.io/@choi-montaunk/프로그래머스-3차-파일명-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol