ํ์ผ๋ช ์ ๋ ฌ
https://programmers.co.kr/learn/courses/30/lessons/17686
๋ฌธ์ ์ค๋ช
์ธ ์ฐจ๋ก์ ์ฝ๋ฉ ํ ์คํธ์ ๋ ์ฐจ๋ก์ ๋ฉด์ ์ด๋ผ๋ ๊ธฐ๋๊ธด ๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ๋ฌด์ฌํ ํต๊ณผํด ์นด์นด์ค์ ์ ์ฌํ ๋ฌด์ง๋ ํ์ผ ์
์ฅ์ ์๋ฒ ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋์๋ค.
์ ์ฅ์ ์๋ฒ์๋ ํ๋ก๊ทธ๋จ์ ๊ณผ๊ฑฐ ๋ฒ์ ์ ๋ชจ๋ ๋ด๊ณ ์์ด, ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ๋ ํ์ผ ๋ชฉ๋ก์ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๋ค. ํ์ผ์ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋์ค์ ๋ง๋ค์ด์ง 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์ ๊ทธ ๋๋จธ์ง ๋ถ๋ถ์ผ๋ก, ์ฌ๊ธฐ์๋ ์ซ์๊ฐ ๋ค์ ๋ํ๋ ์๋ ์์ผ๋ฉฐ, ์๋ฌด ๊ธ์๋ ์์ ์ ์๋ค.
ํ์ผ๋ช | HEAD | NUMBER | TAIL |
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๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ฉด, ์ ๋ ฌ ํ์๋ ์ ๋ ฅ ์ ์ฃผ์ด์ง ๋ ํ์ผ์ ์์๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ค.
๋ฌด์ง๋ฅผ ๋์ ํ์ผ๋ช ์ ๋ ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ผ.
ํ์ด
import re
def solution(li):
pattern_x = re.compile('[^0-9]+|[0-9]+')
pattern_y = re.compile('0+|.+')
dic = []
for i in range(len(li)):
x = pattern_x.findall(li[i])
dic.append([x[0]])
y = pattern_y.findall(x[1])
dic[i].append(''.join(x[2:]))
if len(y) != 1 :
x[1] = y[1]
dic[i].append(x[1])
if len(y) != 1:
dic[i].append(y[0])
dic.sort(key = lambda x : ( x[0].lower(), int(x[2])))
for w in range(len(dic)):
if len(dic[w]) == 4 :
dic[w] = dic[w][0] + dic[w][3] + dic[w][2] + dic[w][1]
else :
dic[w] = dic[w][0] + dic[w][2] + dic[w][1]
return dic
ํ์ด ๊ณผ์
๋ค์ ์ ๊ทํํ์์ ๊ฐ์ง๋ ํจํด์ ๊ตฌํฉ๋๋ค.
pattern_x = re.compile('[^0-9]+|[0-9]+')
pattern_y = re.compile('0+|.+')
๋ฆฌ์คํธ dic์ ๊ตฌํฉ๋๋ค.
dic[0]์๋ Head๊ฐ ๋ค์ด๊ฐ๋๋ค.
dic[1]์๋ Tail์ด ๋ค์ด ๊ฐ๋๋ค.
dic[2]์๋ Number์ด ๋ค์ด๊ฐ๋๋ค.
dic[3]์๋ Number์์ 0์ด 1๊ฐ ์ด์์์ ๋ 0์ด ๋ค์ด๊ฐ๋๋ค.
(๋ง์ฝ '00012'๋ผ๋ฉด dic[3]์๋ '000'์ด ๋ค์ด๊ฐ๊ณ dic[2]์๋ '12'๊ฐ ๋ค์ด๊ฐ๋๋ค.)
for i in range(len(li)):
x = pattern_x.findall(li[i])
dic.append([x[0]])
y = pattern_y.findall(x[1])
dic[i].append(''.join(x[2:]))
if len(y) != 1 :
x[1] = y[1]
dic[i].append(x[1])
if len(y) != 1:
dic[i].append(y[0])
dic ์ ์ ๋ ฌํฉ๋๋ค.
์ฒซ๋ฒ์งธ ๊ธฐ์ค์ธ x[0].lower()
์์ผ๋ก ์ ๋ ฌํฉ๋๋ค. (๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ์ ๋ ฌ)
์ฒซ๋ฒ์งธ ์ ๋ ฌํ ๋ค ๊ฐ์ ์์์ ์๋ ๊ฒ์ ๋๋ฒ์งธ ๊ธฐ์ค์ธ int(x[2])
๋ก ์ ๋ ฌํฉ๋๋ค.
dic.sort(key = lambda x : ( x[0].lower(), int(x[2])))
์กฐํฉ์ ํ์ฌ ์๋ก์ด dic ์ ๋ง๋ค์ด ๋ฐํํฉ๋๋ค.
for w in range(len(dic)):
if len(dic[w]) == 4 :
dic[w] = dic[w][0] + dic[w][3] + dic[w][2] + dic[w][1]
else :
dic[w] = dic[w][0] + dic[w][2] + dic[w][1]
return dic
'Developer > ๐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์ ํ์ ์๊ฐ (0) | 2020.07.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ์ฑํ ๋ฐฉ (0) | 2020.07.08 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] - ์์ด ๋๋ง์๊ธฐ (0) | 2020.06.28 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2020.06.27 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (0) | 2020.06.27 |