์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๋ฌธ์ œํ’€์ด (Python)

[LeetCode] 937. reorder-data-in-log-files (Easy) 2023/4/27

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 4. 27. 21:47
728x90
๋ฌธ์ œ ์ œ๋ชฉ ์ •๋‹ต๋ฅ  ๋‚œ์ด๋„
937. reorder-data-in-log-files 56.4% Easy
 

Reorder Data in Log Files - LeetCode

Can you solve this real interview question? Reorder Data in Log Files - You are given an array of logs. Each log is a space-delimited string of words, where the first word is the identifier. There are two types of logs: * Letter-logs: All words (except the

leetcode.com

 

๋ฌธ์ œ ์š”์•ฝ. ๋กœ๊ทธ ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ •๋ ฌํ•ด๋ผ.

์กฐ๊ฑด 1) ๋กœ๊ทธ ๋ฐฐ์—ด์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค

์กฐ๊ฑด 2) ๊ฐ ๋กœ๊ทธ๋Š” ๋„์–ด์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค

์กฐ๊ฑด 3) ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” ์‹๋ณ„์ž์ด๋‹ค

์กฐ๊ฑด 4) ๋กœ๊ทธ์—๋Š” Letter-log(์†Œ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ), Digit-log(์ˆซ์ž๋กœ ๊ตฌ์„ฑ) ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค

์กฐ๊ฑด 5) Letter-log๋Š” ๋ชจ๋“  Digit-log ์•ž์— ์œ„์น˜ํ•œ๋‹ค

์กฐ๊ฑด 6) Letter-log๊ฐ€ ๋™์ผํ• ๊ฒฝ์šฐ ์‹๋ณ„์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค

์กฐ๊ฑด 7) Digit-log๋Š” ์ž…๋ ฅ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ๋‹ค

 

 

Step1. Letter-log, Digit-log ์‹๋ณ„ -> split(), isalpha(), isdigit() ์ด์šฉ

 

๋ฌธ์ž์—ด์„ seperator ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ”
๋งŒ์•ฝ, maxsplit์„ ์ง€์ •ํ• ๊ฒฝ์šฐ ๋‚˜๋ˆŒ ํšŸ์ˆ˜ ์ œ์•ฝ์ด ์กด์žฌ
string.split(seperator, maxsplit)
๋ฌธ์ž์—ด์˜ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์˜์–ด๋‚˜ ํ•œ๊ธ€์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ string.isalpha()
๋ฌธ์ž์—ด์˜ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์˜์–ด๋‚˜ ํ•œ๊ธ€์ด๋‚˜ ์ˆซ์ž์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ string.isalnum()

 

 

Step2. Letter-log ์ •๋ ฌ -> sort() ํ•จ์ˆ˜ ์ด์šฉ

 

๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ(๋ฐ˜ํ™˜ X) list.sort(key=None, reverse=False)
์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ(๋ฐ˜ํ™˜ O) list.sorted(key=None, reverse=False)

 

- key ๋งค๊ฐœ๋ณ€์ˆ˜

ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

์ฃผ๋กœ lambda x ํ•จ์ˆ˜๋ฅผ ์ด์šฉ, (๊ด„ํ˜ธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ ์ˆœ์„œ ์ง€์ • : ์•ž์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ ๋’ค ๋‚ด์šฉ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

- reverse ๋งค๊ฐœ๋ณ€์ˆ˜

key ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ธ์ง€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ธ์ง€ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉ(๊ธฐ๋ณธ์€ ์˜ค๋ฆ„์ฐจ์ˆœ)

 

 

Step3. Letter-log. Digit-log ํ•ฉ์น˜๊ธฐ -> ๋ฐฐ์—ด ๋ง์…ˆ ์ด์šฉ

 

 

๊ตฌํ˜„

class Solution(object):
    def reorderLogFiles(self, logs):
        """
        :type logs: List[str]
        :rtype: List[str]
        """
        letter_logs=[]
        digit_logs=[]

		#Step1
        for log in logs:
            if(log.split()[1].isalpha()):
                letter_logs.append(log)
            else:
                digit_logs.append(log)
        #Step2
        letter_logs.sort(key=lambda x : (x.split()[1:], x.split()[0]))
        #Step3
        return letter_logs+digit_logs
728x90