๋ฆฌํธ์ฝ๋ LeetCode 937 Reorder Data in Log Files
๋ฌธ์ ์ ํ์ด์ฌ python ํ์ด์
๋๋ค.
https://leetcode.com/problems/reorder-data-in-log-files/description/
๋ฌธ์
๋ก๊ทธ๋ฅผ ์ฌ์ ๋ ฌํ๋ผ. ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ก๊ทธ์ ๊ฐ์ฅ ์ ๋ถ๋ถ์ ์๋ณ์
- ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ก๊ทธ๊ฐ ์ซ์ ๋ก๊ทธ๋ณด๋ค ์์ ์จ๋ค
- ์๋ณ์๋ ์์์ ์ํฅ์ ๋ผ์น์ง ์์ง๋ง, ๋ฌธ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์๋ณ์ ์์ผ๋ก ํ๋ค
- ์ซ์ ๋ก๊ทธ๋ ์
๋ ฅ ์์๋๋ก ํ๋ค
Constraints
1 <= logs.length <= 100
3 <= logs[i].length <= 100
- All the tokens ofย
logs[i]
ย are separated by aย singleย space. logs[i]
ย is guaranteed to have an identifier and at least one word after the identifier.
ํ์ด
๋๋ค ํํ์๊ณผ + ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์์ฑํ์ต๋๋ค.
# ๋ก๊ทธ ํ์ผ ์ฌ์ ๋ ฌ : ๋๋ค์ + ์ฐ์ฐ์๋ฅผ ์ด์ฉ
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)
ย ย ย ย # 2๊ฐ์ ํค๋ฅผ ๋๋ค ํํ์์ผ๋ก ์ ๋ ฌ
ย ย ย ย letters.sort(key=lambda x: (x.split()[1:], x.split()[0]))
ย ย ย ย return letters + digits
๋๋ค ํํ์
ย ย letters.sort(key=lambda x: (x.split()[1:], x.split()[0])
ย ย
letters
๋ [โlet1 art canโ,โdig2 3 6โ,โlet2 own kit digโ,โlet3 art zeroโ] ์ด๋ฐ ํํ๋ก ๋์ด์์ผ๋, x.split()[0]
๋ ์๋ณ์, x.split()[1:]
๋ ์๋ณ์ ๋ค์ ๋ฌธ์ ๋ก๊ทธ์
๋๋ค.
๋ฌธ์ ์์ ์ ์ํ๊ธฐ๋ก, ์๋ณ์๋ ์์์ ์ํฅ์ ๋ผ์น์ง ์๊ณ ๋ฌธ์ ์์๋ก ์ ๋ ฌํ๋, ๋ฌธ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์๋ณ์ ์์ผ๋ก ํ๋ค๊ณ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋๋ค์์ 2๊ฐ์ ํค๋ฅผ ์ค๋๋ค. ์ฐ์ ์์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ๋ก๊ทธ, ํ์์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์๋ณ์๋ฅผ ์ฃผ๋ฉด ๋๊ฒ ์ต๋๋ค.
์ดํ ์ซ์ ๋ก๊ทธ๋ ์
๋ ฅ ์์๋๋ก ํ๋ค๊ณ ํ์์ผ๋ฏ๋ก, digits ๋ฆฌ์คํธ๋ ๊ทธ๋๋ก ์ด์ด๋ถ์ด๋ฉด ์ฌ์ ๋ ฌ์ด ์๋ฃ๋ฉ๋๋ค.