2021. 7. 25. 11:31ใ๐ฑ Algorithm
์ ๋ต ์ฝ๋
import re
def solution(files):
filtered_files = [re.split("([0-9]+)", file) for file in files]
sorted_files = sorted(filtered_files, key=lambda x: (x[0].lower(), int(x[1])))
return [(''.join(s)) for s in sorted_files]
files = ["img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"]
solution(files)
>>> ['img1.png', 'IMG01.GIF', 'img02.png', 'img2.JPG', 'img10.png', 'img12.png']
๐ ์ ๊ท ํํ์์ผ๋ก ํํฐ๋ง ํ : filtered_files
def solution(files):
filtered_files = [re.split("([0-9]+)", file) for file in files]
print(fileted_files)
>>> [['img', '12', '.png'], ['img', '10', '.png'], ['img', '02', '.png'], ['img', '1', '.png'], ['IMG', '01', '.GIF'], ['img', '2', '.JPG']]
์ฐ์ head ์ number ๋ฅผ ๋๋ ์ผ ํฉ๋๋ค. head ๋ ๋ฌธ์๋ง, number ๋ ์ซ์๋ง ๋ค์ด๊ฐ๋๋ค.
โก๏ธ tail ๋ถ๋ถ์ number ๊ฐ ๋ค์ด ๊ฐ ์ ์์ง๋ง, Head, Number ๋ง ๋๋๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์๋ง ์ง์คํ๋ฉด ๋ฉ๋๋ค.
์ ๊ท ํํ์์ ์ด์ฉํ์ฌ ์ซ์๊ฐ ๋ค์ด๊ฐ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค.
๐ ๋๋ค์์ผ๋ก ์ ๋ ฌ
def solution(files):
filtered_files = [re.split("([0-9]+)", file) for file in files]
sorted_files = sorted(filtered_files, key=lambda x: (x[0].lower(), int(x[1])))
print(sorted_files)
>>> [['img', '1', '.png'], ['IMG', '01', '.GIF'], ['img', '02', '.png'], ['img', '2', '.JPG'], ['img', '10', '.pn', '21', 'g'], ['img', '12', '.png']]
1๏ธโฃ ์ฒซ๋ฒ์งธ Head ์ ๋ ฌ
๋๋ค์๊ณผ sorted() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌ ์กฐ๊ฑด์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ฐ์ filtered_files ์ ๋ชจ๋ ์์๋ค์ ์ฒซ๋ฒ์งธ ์ธ์๋ผ๋ฆฌ ๋น๊ต ํ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํฉ๋๋ค. (sorted()์ ์ธ๋ฒ์งธ ์ธ์๋ก reverese=True /False ์กฐ๊ฑด์ ํตํด ์ค๋ฆ์ฐจ์/๋ด๋ฆผ์ฐจ์์ ์ค์ ํ ์ ์์ต๋๋ค)
2๏ธโฃ ๋๋ฒ์งธ Number ์ ๋ ฌ
์ฒซ๋ฒ์งธ ์ธ์๋ผ๋ฆฌ์ ๋น๊ต๋ก head ๋ผ๋ฆฌ ๋น๊ต๋ฅผ ๋ง์ณค๋ค๋ฉด, lambda ์ ๋๋ฒ์งธ ์ธ์๋ก number ๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค.
๐ฆ ๋ง์ฝ ๋ฌธ์ ์กฐ๊ฑด์ด number ๋ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด์๋ค๋ฉด, int(x[1]) ์์ - (minus) ๋ถํธ๋ฅผ ๋ถ์ฌ ๋ด๋ฆผ์ฐจ์์ ๊ตฌํํ ์ ์์ต๋๋ค. ํด๋น ๋ฌธ์ ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด๊ธฐ ๋๋ฌธ์ ๋ถํธ๋ฅผ ์จ์ฃผ์ง ์์๋ ๋ฉ๋๋ค.
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ ํ์ด์ฌ (0) | 2021.08.03 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฐ๋ฌ ํ์ด์ฌ (0) | 2021.07.28 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์ ๊ท์์ด๋์ถ์ฒ (0) | 2021.07.22 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด ํ์ด์ฌ (0) | 2021.07.21 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์์ฃผํ์ง ๋ชปํ ์ ์ ํ์ด์ฌ (0) | 2021.06.30 |