์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - 2018 KAKAO BLIND RECRUITMENT
<[3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ>
๋ฌธ์ ์ค๋ช
์ธ ์ฐจ๋ก์ ์ฝ๋ฉ ํ ์คํธ์ ๋ ์ฐจ๋ก์ ๋ฉด์ ์ด๋ผ๋ ๊ธฐ๋๊ธด ๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ๋ฌด์ฌํ ํต๊ณผํด
์นด์นด์ค์ ์ ์ฌํ ๋ฌด์ง๋ ํ์ผ ์ ์ฅ์ ์๋ฒ ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋์๋ค.
์ ์ฅ์ ์๋ฒ์๋ ํ๋ก๊ทธ๋จ์ ๊ณผ๊ฑฐ ๋ฒ์ ์ ๋ชจ๋ ๋ด๊ณ ์์ด,
์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ๋ ํ์ผ ๋ชฉ๋ก์ ๋ณด๊ธฐ๊ฐ ๋ถํธํ๋ค.
ํ์ผ์ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋์ค์ ๋ง๋ค์ด์ง 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๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ฉด, ์ ๋ ฌ ํ์๋ ์ ๋ ฅ ์ ์ฃผ์ด์ง ๋ ํ์ผ์ ์์๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ค.
๋ฌด์ง๋ฅผ ๋์ ํ์ผ๋ช ์ ๋ ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ผ.
์ ๋ ฅ ํ์
์ ๋ ฅ์ผ๋ก ๋ฐฐ์ด files๊ฐ ์ฃผ์ด์ง๋ค.
- files๋ 1000 ๊ฐ ์ดํ์ ํ์ผ๋ช ์ ํฌํจํ๋ ๋ฌธ์์ด ๋ฐฐ์ด์ด๋ค.
- ๊ฐ ํ์ผ๋ช ์ 100 ๊ธ์ ์ดํ ๊ธธ์ด๋ก, ์๋ฌธ ๋์๋ฌธ์, ์ซ์, ๊ณต๋ฐฑ(" "), ๋ง์นจํ("."), ๋นผ๊ธฐ ๋ถํธ("-")๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ํ์ผ๋ช ์ ์๋ฌธ์๋ก ์์ํ๋ฉฐ, ์ซ์๋ฅผ ํ๋ ์ด์ ํฌํจํ๊ณ ์๋ค.
- ์ค๋ณต๋ ํ์ผ๋ช ์ ์์ผ๋, ๋์๋ฌธ์๋ ์ซ์ ์๋ถ๋ถ์ 0 ์ฐจ์ด๊ฐ ์๋ ๊ฒฝ์ฐ๋ ํจ๊ป ์ฃผ์ด์ง ์ ์๋ค. (muzi1.txt, MUZI1.txt, muzi001.txt, muzi1.TXT๋ ํจ๊ป ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ ์๋ค.)
์ถ๋ ฅ ํ์
์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
def solution(files):
answer = []
temp=[]
for i in files:
head,num,tail='','',''
check=False
numcheck=False
for j in i:
if not j.isdigit():
if check==True: #Tail
tail+=j
numcheck=True
else: #HEAD
head+=j
elif j.isdigit():
if numcheck==True: #Tail
tail+=j
else: # NUMBER
num+=j
check=True
if len(num)>=5: # NUMBER ํ๊ธ์ ~ ์ต๋ ๋ค์ฏ ๊ธ์
numcheck=True
temp.append([head,num,tail])
temp.sort(key=lambda x: (x[0].upper(),int(x[1]))) # ์ ๋ ฌ) 1. HEAD ๊ธฐ์ค 2. NUMBER ๊ธฐ์ค 3. ์
๋ ฅ ์์
for i in temp:
answer.append(''.join(i))
return answer
#abc123defg123 ์ ๊ฒฝ์ฐ NUMBER๊ณผ TAIL ๊ตฌ๋ถ ํ์คํ ํด์ฃผ์ด์ผ ํต๊ณผ
TAIL์ ๊ตฌํ ๋ ์ if๋ฌธ์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ์ฌ ํ๋ณํ๋๊ฐ?
-> index๋ฅผ ํ์ฉํ์ฌ ํ๋ฒ์ TAIL์ ๊ตฌํด์ฃผ๊ณ ์ถ์์ง๋ง slice๋ฅผ ํ ๋ index error๊ฐ ๋ฐ์ํ์ฌ
์ด์ ๋ฅผ ์ฐพ์ง ๋ชปํด ํ๋ํ๋ ๊ตฌํํ์๋ค. ๋ค์์ ์ด์ ๋ฅผ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
1) ๊ณต๋ฐฑ, ๋ง์นจํ, ๋นผ๊ธฐ๋ถํธ๋ค์ด ์กด์ฌํ๋ฏ๋ก isdigit๊ณผ not isdigit์ ํ์ฉํ์ฌ ํ๋จ
2) HEAD์ TAIL์ ๊ตฌ๋ถํ๊ณ NUMBER์ TAIL์ ๊ตฌ๋ถํด์ผ ํ๋ฏ๋ก check๊ณผ numcheck๋ฅผ ์ ์ธ
3) ์ ๋ ฌ ๊ธฐ์ค์ HEAD(์๋ฌธ์, ๋๋ฌธ์ ์๊ด์์ด), NUMBER, ์ ๋ ฅ ์์์ด๋ฏ๋ก sort์ lambda๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐ
4) list์ด๋ฏ๋ก join์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด๋ก ๋ณํ ํ ๋ฐํ
์๊ฐ๐ค
์์์๋ ์ค๋ช ํ๋ฏ์ด ์ slice์ ์๋ฌ๊ฐ ๋ฐ์ํ์๊น?
ํ๋์ฉ sliceํ์ฌ ์ถ๋ ฅํ์๋๋ ์ถ๋ ฅ์ด ์ ๋์๋๋ฐ ๋ณ์์ ๋ฃ๊ณ ์ฝ๋๋ฅผ ๋๋ฆฌ๋ค๋ณด๋
์ด๋์ ๊ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ๋ค.
๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์ด ๋ฌธ์ ์ ํฌ์ธํธ๋
1) HEAD, NUMBER, TAIL์ ๊ตฌ๋ถํ๋ ์ฝ๋ ๊ตฌํ
์ธ ๊ฒ ๊ฐ๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] ๊ดํธ ํ์ ํ๊ธฐ - ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2 (0) | 2021.09.07 |
---|---|
[programmers] ๊ดํธ ๋ณํ - 2020 KAKAO BLIND RECRUITMENT (0) | 2021.09.06 |
[programmers] ํํ -2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ (0) | 2021.09.04 |
[programmers] ์ด์ค์ฐ์ ์์ํ (0) | 2021.08.25 |
[programmers] ์ ์ ์ผ๊ฐํ (0) | 2021.08.23 |