Reorder LogFiles

logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]

๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋กœ๊ทธ๋“ค์ด ์•ž์— ์™€์•ผํ•จ

let1 art can ๋‹ค์Œ dig1 8 1 5 1

๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋กœ๊ทธ๋ผ๋ฆฌ๋Š” art can, own kit dig ์„ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•ด์„œ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•จ

art can, art zero ์ฒ˜๋Ÿผ ๋งจ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด let1, let3 ์„ ๋น„๊ตํ•ด์„œ let1 โ†’ let3 ์ด ๋˜๋„๋ก ์ •๋ ฌํ•จ

์ผ์ฐจ์ ์œผ๋กœ ์ˆซ์ž ๋กœ๊ทธ , ๋ฌธ์ž๋กœ๊ทธ๋ฅผ ๋ถ„ํ• ํ•จ

ํƒ€์ž…์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ  ์‹ค์ œ ์ˆซ์ž์ธ์ง€ isdigit() ์„ ํ†ตํ•ด ํ™•์ธํ•จ

sorted ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋กœ๊ทธ ์ •๋ ฌ

javascript ์™€ ๋‹ฌ๋ฆฌ ์–ด๋–ค๊ฑธ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๊ฑด์ง€๋ฅผ argument ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋จ

sorted() ์— ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋„ฃ์œผ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•จ

list ์— ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ์žˆ๋Š” json ๊ฐ™์€ ๊ฒฝ์šฐ ํŠน์ • key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ผ์ฐจ์ ์œผ๋กœ id ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์ง€๋งŒ ๋งŒ์•ฝ id ๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ

2์ฐจ ํ‚ค๋กœ name ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.


sample =[
{"id":1,"name":"a"},
{"id":2,"name":"f"},
{"id":2,"name":"c"},
{"id":2,"name":"b"}
]

print("before",sample)

sample.sort(key = lambda x:(x["id"],x["name"]))

print("after",sample)

python ์—์„œ๋Š” ๋‘๊ฐœ์˜ list ๋ฅผ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ list ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‹จ์ˆœํžˆ + ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        letters = []
        digits = []
        
        for log in logs:
            if(log.split()[1].isdigit()):
                digits.append(log)
            else:
                letters.append(log)
        
        
        
        return sorted(letters,key = lambda x:(x.split()[1:],x.split()[0]) )+digits

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ