๋ฌธ์ ์ค๋ช
์ธ ์ฐจ๋ก์ ์ฝ๋ฉ ํ ์คํธ์ ๋ ์ฐจ๋ก์ ๋ฉด์ ์ด๋ผ๋ ๊ธฐ๋๊ธด ๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ๋ฌด์ฌํ ํต๊ณผํด ์นด์นด์ค์ ์ ์ฌํ ๋ฌด์ง๋ ํ์ผ ์ ์ฅ์ ์๋ฒ ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋์๋ค.
์ ์ฅ์ ์๋ฒ์๋ ํ๋ก๊ทธ๋จ์ ๊ณผ๊ฑฐ ๋ฒ์ ์ ๋ชจ๋ ๋ด๊ณ ์์ด, ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ๋ ํ์ผ ๋ชฉ๋ก์ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๋ค. ํ์ผ์ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋์ค์ ๋ง๋ค์ด์ง ver-10.zip์ด ver-9.zip๋ณด๋ค ๋จผ์ ํ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฒ์ ๋ฒํธ ์ธ์๋ ์ซ์๊ฐ ํฌํจ๋ ํ์ผ ๋ชฉ๋ก์ ์ฌ๋ฌ ๋ฉด์์ ๊ด๋ฆฌํ๊ธฐ ๋ถํธํ๋ค. ์์ปจ๋ ํ์ผ ๋ชฉ๋ก์ด ["img12.png", "img10.png", "img2.png", "img1.png"]์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ์ ์ธ ์ ๋ ฌ์ ["img1.png", "img10.png", "img12.png", "img2.png"] ์์ด ๋์ง๋ง, ์ซ์ ์์ผ๋ก ์ ๋ ฌ๋ ["img1.png", "img2.png", "img10.png", img12.png"] ์์ด ํจ์ฌ ์์ฐ์ค๋ฝ๋ค.
๋ฌด์ง๋ ๋จ์ํ ๋ฌธ์ ์ฝ๋ ์์ด ์๋, ํ์ผ๋ช ์ ํฌํจ๋ ์ซ์๋ฅผ ๋ฐ์ํ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ์ฅ์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์์ค ํ์ผ ์ ์ฅ์์ ์ ์ฅ๋ ํ์ผ๋ช ์ 100 ๊ธ์ ์ด๋ด๋ก, ์๋ฌธ ๋์๋ฌธ์, ์ซ์, ๊ณต๋ฐฑ(" "), ๋ง์นจํ("."), ๋นผ๊ธฐ ๋ถํธ("-")๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ํ์ผ๋ช ์ ์๋ฌธ์๋ก ์์ํ๋ฉฐ, ์ซ์๋ฅผ ํ๋ ์ด์ ํฌํจํ๊ณ ์๋ค.
ํ์ผ๋ช ์ ํฌ๊ฒ HEAD, NUMBER, TAIL์ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- HEAD๋ ์ซ์๊ฐ ์๋ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ต์ํ ํ ๊ธ์ ์ด์์ด๋ค.
- NUMBER๋ ํ ๊ธ์์์ ์ต๋ ๋ค์ฏ ๊ธ์ ์ฌ์ด์ ์ฐ์๋ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์์ชฝ์ 0์ด ์ฌ ์ ์๋ค. 0๋ถํฐ 99999 ์ฌ์ด์ ์ซ์๋ก, 00000์ด๋ 0101 ๋ฑ๋ ๊ฐ๋ฅํ๋ค.
- TAIL์ ๊ทธ ๋๋จธ์ง ๋ถ๋ถ์ผ๋ก, ์ฌ๊ธฐ์๋ ์ซ์๊ฐ ๋ค์ ๋ํ๋ ์๋ ์์ผ๋ฉฐ, ์๋ฌด ๊ธ์๋ ์์ ์ ์๋ค.
ํ์ผ๋ช HEADNUMBERTAIL
foo9.txt | foo | 9 | .txt |
foo010bar020.zip | foo | 010 | bar020.zip |
F-15 | F- | 15 | (๋น ๋ฌธ์์ด) |
ํ์ผ๋ช ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋ ํ, ๋ค์ ๊ธฐ์ค์ ๋ฐ๋ผ ํ์ผ๋ช ์ ์ ๋ ฌํ๋ค.
- ํ์ผ๋ช ์ ์ฐ์ HEAD ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ด๋, ๋ฌธ์์ด ๋น๊ต ์ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค. MUZI์ muzi, MuZi๋ ์ ๋ ฌ ์์ ๊ฐ์ ์์๋ก ์ทจ๊ธ๋๋ค.
- ํ์ผ๋ช ์ HEAD ๋ถ๋ถ์ด ๋์๋ฌธ์ ์ฐจ์ด ์ธ์๋ ๊ฐ์ ๊ฒฝ์ฐ, NUMBER์ ์ซ์ ์์ผ๋ก ์ ๋ ฌํ๋ค. 9 < 10 < 0011 < 012 < 13 < 014 ์์ผ๋ก ์ ๋ ฌ๋๋ค. ์ซ์ ์์ 0์ ๋ฌด์๋๋ฉฐ, 012์ 12๋ ์ ๋ ฌ ์์ ๊ฐ์ ๊ฐ์ ๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- ๋ ํ์ผ์ HEAD ๋ถ๋ถ๊ณผ, NUMBER์ ์ซ์๋ ๊ฐ์ ๊ฒฝ์ฐ, ์๋ ์ ๋ ฅ์ ์ฃผ์ด์ง ์์๋ฅผ ์ ์งํ๋ค. MUZI01.zip๊ณผ muzi1.png๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ฉด, ์ ๋ ฌ ํ์๋ ์ ๋ ฅ ์ ์ฃผ์ด์ง ๋ ํ์ผ์ ์์๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ค.
๋ฌด์ง๋ฅผ ๋์ ํ์ผ๋ช ์ ๋ ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ผ.
์ ํ ์ฌํญ
์ ๋ ฅ ํ์
์ ๋ ฅ์ผ๋ก ๋ฐฐ์ด files๊ฐ ์ฃผ์ด์ง๋ค.
- files๋ 1000 ๊ฐ ์ดํ์ ํ์ผ๋ช ์ ํฌํจํ๋ ๋ฌธ์์ด ๋ฐฐ์ด์ด๋ค.
- ๊ฐ ํ์ผ๋ช ์ 100 ๊ธ์ ์ดํ ๊ธธ์ด๋ก, ์๋ฌธ ๋์๋ฌธ์, ์ซ์, ๊ณต๋ฐฑ(" "), ๋ง์นจํ("."), ๋นผ๊ธฐ ๋ถํธ("-")๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ํ์ผ๋ช ์ ์๋ฌธ์๋ก ์์ํ๋ฉฐ, ์ซ์๋ฅผ ํ๋ ์ด์ ํฌํจํ๊ณ ์๋ค.
- ์ค๋ณต๋ ํ์ผ๋ช ์ ์์ผ๋, ๋์๋ฌธ์๋ ์ซ์ ์๋ถ๋ถ์ 0 ์ฐจ์ด๊ฐ ์๋ ๊ฒฝ์ฐ๋ ํจ๊ป ์ฃผ์ด์ง ์ ์๋ค. (muzi1.txt, MUZI1.txt, muzi001.txt, muzi1.TXT๋ ํจ๊ป ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ ์๋ค.)
์ถ๋ ฅ ํ์
- ์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์
์
๋ ฅ: ["img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"]
์ถ๋ ฅ: ["img1.png", "IMG01.GIF", "img02.png", "img2.JPG", "img10.png", "img12.png"]
์
๋ ฅ: ["F-5 Freedom Fighter", "B-50 Superfortress", "A-10 Thunderbolt II", "F-14 Tomcat"]
์ถ๋ ฅ: ["A-10 Thunderbolt II", "B-50 Superfortress", "F-5 Freedom Fighter", "F-14 Tomcat"]
์ ์ถ๋ ฅ ์ ์ค๋ช
ํ์ด
- ์ด์ ์ ํ๋ ค์ ํ๋ค ์๋ฒ๋ ธ๋๋ฐ...
- ๊ณ ์น ๋ถ๋ถ split_head_num_tail์ for๋ฌธ์ผ๋ก ์งฏ๋ค๊ฐ while๋ก ์์ ํ๊ณ ๊ณ์ ์ง์ง๊ณ ๋ณต๊ณ ํ์ ใ ก.ใ ก;
def split_head_num_tail(string):
n, t = 0, 0
while n < len(string):
if string[n].isdigit():
break
n += 1
t = n + 1
while t < len(string):
if string[t].isdigit() == False:
break
t += 1
return (string[:n], string[n:t], string[t:])
def solution(files):
answer = []
sorted_files = []
for file in files:
sorted_files.append(split_head_num_tail(file))
sorted_files.sort(key=lambda x:(x[0].lower(),int(x[1])))
answer = [''.join(i) for i in sorted_files]
return answer
- ํด ๋คํ
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.04ms, 10.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (2.56ms, 10.7MB)
ํ
์คํธ 4 ใ ํต๊ณผ (2.62ms, 10.7MB)
ํ
์คํธ 5 ใ ํต๊ณผ (2.54ms, 10.7MB)
ํ
์คํธ 6 ใ ํต๊ณผ (2.45ms, 10.7MB)
ํ
์คํธ 7 ใ ํต๊ณผ (2.56ms, 10.7MB)
ํ
์คํธ 8 ใ ํต๊ณผ (2.28ms, 10.5MB)
ํ
์คํธ 9 ใ ํต๊ณผ (2.32ms, 10.7MB)
ํ
์คํธ 10 ใ ํต๊ณผ (2.28ms, 10.6MB)
ํ
์คํธ 11 ใ ํต๊ณผ (2.45ms, 10.5MB)
ํ
์คํธ 12 ใ ํต๊ณผ (2.41ms, 10.8MB)
ํ
์คํธ 13 ใ ํต๊ณผ (2.10ms, 10.6MB)
ํ
์คํธ 14 ใ ํต๊ณผ (2.53ms, 10.9MB)
ํ
์คํธ 15 ใ ํต๊ณผ (2.53ms, 10.8MB)
ํ
์คํธ 16 ใ ํต๊ณผ (2.27ms, 10.7MB)
ํ
์คํธ 17 ใ ํต๊ณผ (1.89ms, 10.4MB)
ํ
์คํธ 18 ใ ํต๊ณผ (2.08ms, 10.7MB)
ํ
์คํธ 19 ใ ํต๊ณผ (2.35ms, 10.7MB)
ํ
์คํธ 20 ใ ํต๊ณผ (2.48ms, 10.7MB)
- ๊ณ ์์ ํ์ด
- ...............
import re
def solution(files):
a = sorted(files, key=lambda file : int(re.findall('\d+', file)[0]))
b = sorted(a, key=lambda file : re.split('\d+', file.lower())[0])
return b
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.10ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.09ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (2.65ms, 10.5MB)
ํ
์คํธ 4 ใ ํต๊ณผ (2.67ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (2.62ms, 10.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (2.51ms, 10.5MB)
ํ
์คํธ 7 ใ ํต๊ณผ (2.48ms, 10.5MB)
ํ
์คํธ 8 ใ ํต๊ณผ (2.26ms, 10.4MB)
ํ
์คํธ 9 ใ ํต๊ณผ (2.30ms, 10.5MB)
ํ
์คํธ 10 ใ ํต๊ณผ (2.46ms, 10.4MB)
ํ
์คํธ 11 ใ ํต๊ณผ (2.39ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (2.57ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (2.49ms, 10.6MB)
ํ
์คํธ 14 ใ ํต๊ณผ (3.47ms, 10.5MB)
ํ
์คํธ 15 ใ ํต๊ณผ (3.50ms, 10.6MB)
ํ
์คํธ 16 ใ ํต๊ณผ (2.34ms, 10.4MB)
ํ
์คํธ 17 ใ ํต๊ณผ (2.25ms, 10.4MB)
ํ
์คํธ 18 ใ ํต๊ณผ (4.02ms, 10.5MB)
ํ
์คํธ 19 ใ ํต๊ณผ (2.64ms, 10.5MB)
ํ
์คํธ 20 ใ ํต๊ณผ (2.58ms, 10.5MB)
- ใ ก.ใ ก
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()))
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.16ms, 10.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.18ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (1.91ms, 10.6MB)
ํ
์คํธ 4 ใ ํต๊ณผ (1.99ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (1.92ms, 10.5MB)
ํ
์คํธ 6 ใ ํต๊ณผ (1.89ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (1.90ms, 10.5MB)
ํ
์คํธ 8 ใ ํต๊ณผ (1.89ms, 10.4MB)
ํ
์คํธ 9 ใ ํต๊ณผ (1.77ms, 10.6MB)
ํ
์คํธ 10 ใ ํต๊ณผ (1.86ms, 10.5MB)
ํ
์คํธ 11 ใ ํต๊ณผ (1.87ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (1.86ms, 10.5MB)
ํ
์คํธ 13 ใ ํต๊ณผ (1.53ms, 10.4MB)
ํ
์คํธ 14 ใ ํต๊ณผ (1.53ms, 10.8MB)
ํ
์คํธ 15 ใ ํต๊ณผ (1.56ms, 10.6MB)
ํ
์คํธ 16 ใ ํต๊ณผ (1.90ms, 10.4MB)
ํ
์คํธ 17 ใ ํต๊ณผ (1.52ms, 10.4MB)
ํ
์คํธ 18 ใ ํต๊ณผ (1.63ms, 10.4MB)
ํ
์คํธ 19 ใ ํต๊ณผ (1.75ms, 10.5MB)
ํ
์คํธ 20 ใ ํต๊ณผ (1.84ms, 10.5MB)
์ ๊ทํํ์์ผ๋ก ํ ์ ์๋ ๋ฌธ์ ์๋ค๊ณ ํ๋ค.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋์ถฉ ๋ง๋ ์ํ (0) | 2023.02.23 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์๊ถ๋ํ (ํฌ๊ธฐ) (0) | 2023.02.23 |
์ฝ๋ฉํ ์คํธ ์ ์ ์ผ๊ฐํ (0) | 2023.02.23 |
ํ๋ก๊ทธ๋๋จธ์ค ํํ ๊ฐ๋ฅํ ์ด์งํธ๋ฆฌ (ํฌํ์ด์งํธ๋ฆฌ) (0) | 2023.02.22 |
ํ๋ก๊ทธ๋๋จธ์ค ํ๋ณดํค (0) | 2023.02.22 |