๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] ํŒŒ์ผ๋ช… ์ •๋ ฌ (level2, python)
๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] ํŒŒ์ผ๋ช… ์ •๋ ฌ (level2, python)

2022. 9. 13. 22:47

๋ฌธ์ œ ์„ค๋ช…

์„ธ ์ฐจ๋ก€์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์™€ ๋‘ ์ฐจ๋ก€์˜ ๋ฉด์ ‘์ด๋ผ๋Š” ๊ธฐ๋‚˜๊ธด ๋ธ”๋ผ์ธ๋“œ ๊ณต์ฑ„๋ฅผ ๋ฌด์‚ฌํžˆ ํ†ต๊ณผํ•ด ์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ๋ฌด์ง€๋Š” ํŒŒ์ผ ์ €์žฅ์†Œ ์„œ๋ฒ„ ๊ด€๋ฆฌ๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์ €์žฅ์†Œ ์„œ๋ฒ„์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณผ๊ฑฐ ๋ฒ„์ „์„ ๋ชจ๋‘ ๋‹ด๊ณ  ์žˆ์–ด, ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ํŒŒ์ผ ๋ชฉ๋ก์€ ๋ณด๊ธฐ๊ฐ€ ๋ถˆํŽธํ–ˆ๋‹ค. ํŒŒ์ผ์„ ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋‚˜์ค‘์— ๋งŒ๋“ค์–ด์ง„ 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 ๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์ด๋•Œ, ๋ฌธ์ž์—ด ๋น„๊ต ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. 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"]


ํ’€์ด ์ฝ”๋“œ

from collections import deque

def solution(files):
    answer = []
    file_array = []
    
    for idx, f in enumerate(files):
        file = [f, '', '', '', idx]
        queue = deque(f)
        
        # fill head
        while queue:
            if queue[0].isdigit():
                break
            else:
                temp = queue.popleft()
                if temp.isalpha():
                    file[1] += temp.lower()
                else:
                    file[1] += temp
        
        # fill number
        cnt = 0
        while queue:
            if cnt >= 5:
                break
            if queue[0].isdigit():
                file[2] += queue.popleft()
                cnt += 1
            else:
                break
                
        # fill tail
        file[3] += ''.join(queue)
        file_array.append(file)
    
    file_array.sort(key = lambda x: (x[1], int(x[2]), x[4]))
    
    for f in file_array:
        answer.append(''.join(f[0]))
        
    return answer

๊ตฌํ˜„ ๋ฌธ์ œ์ด๊ณ , ์ •๋ ฌ๊ณผ ํ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด ํ’€์ดํ–ˆ๋‹ค.

์šฐ์„  ์ •๋ ฌ์„ ํ•ด์•ผ ํ•˜์ง€๋งŒ, ๊ธฐ์ค€์ด ๋˜๋Š” ํ‚ค๊ฐ€ head, number, tail์ด๊ณ , ์‹ค์ œ ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ’์€ files์— ๋“ค์–ด์žˆ๋Š” ์š”์†Œ์ด๋‹ค.

๋”ฐ๋ผ์„œ file = [๊ธฐ์กด ํŒŒ์ผ, HEAD, NUMBER, TAIL, ๊ธฐ์กด์— ๋“ค์–ด์žˆ๋˜ ์ˆœ๋ฒˆ]์œผ๋กœ ์†์„ ์ฑ„์›Œ์ค€๋‹ค.

 

์†์„ ์ฑ„์›Œ์ฃผ๋Š” ๊ณผ์ •์€, ํ ๋‚ด๋ถ€์— ๊ธฐ์กด ํŒŒ์ผ ์ด๋ฆ„์„ ์ง‘์–ด ๋„ฃ๊ณ  ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€๋ฅผ HEAD์— ์ €์žฅํ•œ๋‹ค.

HEAD์— ์ €์žฅํ•  ๋•Œ๋Š”, ์ •๋ ฌ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์„ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ islower() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋‘ ์†Œ๋ฌธ์ž ํ‚ค ๊ฐ’์„ ๊ฐ–๋„๋ก ํ•œ๋‹ค.

 

๊ทธ ์ดํ›„์—” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ํ˜น์€ ์ˆซ์ž์—ฌ๋„ 5์ž๋ฆฌ๊นŒ์ง€ ๋Š์–ด NUMBER์— ์ €์žฅํ•œ๋‹ค.

๋‚˜๋จธ์ง€ ํ์— ๋‚จ์€ ๊ฒƒ์„ TAIL์— ์ €์žฅํ•œ๋‹ค.

 

์ด์ œ ์ด๊ฒƒ๋“ค์ด ์ •๋ฆฌ๋œ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ(file_array)๋ฅผ sorting ํ•œ๋‹ค.

ํ‚ค ๊ฐ’์€ ์šฐ์„  HEAD์œผ๋กœ ์ •๋ ฌ, ๊ทธ ์•ˆ์—์„œ ์ˆซ์ž ๊ธฐ์ค€ NUMBER์œผ๋กœ ์ •๋ ฌ, ๊ทธ ์•ˆ์—์„œ ๋“ค์–ด์žˆ๋˜ ์ˆœ๋ฒˆ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์ด์ œ ๊ฐ ๋ฐฐ์—ด์˜ 0๋ฒˆ ์ธ๋ฑ์Šค ์š”์†Œ์—๋Š” ๊ธฐ์กด ํŒŒ์ผ ์ด๋ฆ„์ด ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ๋งŒ ๋นผ๋‚ด์–ด ๋ฆฌํ„ดํ•˜๋ฉด ๋œ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ (level2, python)  (1) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ชจ์Œ์‚ฌ์ „ (level2, python)  (1) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (level2, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‚ฌํŠธ๋ฆฌ (level2, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋•…๋”ฐ๋จน๊ธฐ (level2, python)  (0) 2022.09.13
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ชจ์Œ์‚ฌ์ „ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‚ฌํŠธ๋ฆฌ (level2, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”