๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]ํŒŒ์ผ๋ช… ์ •๋ ฌ

by syLim___ 2023. 6. 23.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/17686#

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


1. ํŒŒ์ผ๋ณ„๋กœ  [head, number, ์ •๋ ฌ ์ „ ์ธ๋ฑ์Šค] ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ

 - ๊ฐ ํŒŒ์ผ์˜ ์ค‘๊ฐ„ ์ˆซ์ž๋ถ€๋ถ„ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๋‚˜๋ˆ”

 - ์ด๋•Œ head๋Š” ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ์–ด์„œ ์ง‘์–ด๋„ฃ์—ˆ์Œ ( ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ์•ˆ ํ•˜๋ฏ€๋กœ )

 - 0์„ ๋ฌด์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ number๋Š” string์ด ์•„๋‹Œ int๋กœ ์ง‘์–ด๋„ฃ์—ˆ์Œ

 

2. ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ๊ธฐ์ค€๋Œ€๋กœ, ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ

 

3. ์›๋ž˜ ๋ฆฌ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์˜ fullname์„ answer์— ์ฐจ๋ก€๋กœ ์ถ”๊ฐ€

 - ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์˜ ์ •๋ ฌ ์ „ ์ธ๋ฑ์Šค ์ •๋ณด ์ด์šฉ

 

def solution(files):
    answer = []
    
    # 1. ํŒŒ์ผ๋ช…์„ head, number, tail ๋กœ ๋‚˜๋ˆ„๊ธฐ
    newfiles = []
    original = 0
    for file in files:
        n = len(file)
        idx1 = n
        idx2 = n
        for i in range(n):
            if file[i].isdigit():
                idx1 = min(idx1, i)
            if i > idx1 and file[i].isdigit()==False:
                idx2 = i
                break
        newfiles.append([file[:idx1].lower(),int(file[idx1:idx2]),original])
        #### tail์˜ ๋‚ด์šฉ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์•„์„œ files์—์„œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•จ
        original += 1
    
    # 2. ์ •๋ ฌ
    newfiles.sort(key = lambda x: (x[0], x[1], x[2]))
    
    for file in newfiles:
        answer.append(files[file[2]])
    return answer

 

728x90