[LeetCode] 406.Β Queue Reconstruction by Height

yunanΒ·2021λ…„ 2μ›” 24일
0
post-thumbnail

πŸ”¦ 문제 링크

πŸ”Š 파이썬 μ•Œκ³ λ¦¬μ¦˜ 인터뷰 책을 μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€.

  • 문제

μ‚¬λžŒμ˜ 배열이 μ œκ³΅λ©λ‹ˆλ‹€ (λ°˜λ“œμ‹œ μˆœμ„œκ°€ μ•„λ‹˜). 각 μ‚¬λžŒ [i] = [hi, ki]λŠ” 높이 hi의 i 번째 μ‚¬λžŒμ„ λ‚˜νƒ€λ‚΄λ©°, ν˜„μž¬ μ‚¬λžŒ μ•žμ— hi μ΄μƒμ˜ 높이λ₯Ό 가진 μ‚¬λžŒμ΄ μ •ν™•νžˆ kiλͺ…이 μžˆμŠ΅λ‹ˆλ‹€. μž…λ ₯ λ°°μ—΄ people이 λ‚˜νƒ€λ‚΄λŠ” 큐λ₯Ό μž¬κ΅¬μ„±ν•˜κ³  λ°˜ν™˜ν•©λ‹ˆλ‹€. λ°˜ν™˜ 된 λŒ€κΈ°μ—΄μ€ λ°°μ—΄ λŒ€κΈ°μ—΄λ‘œ ν˜•μ‹ν™”λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ queue [j] = [hj, kj]λŠ” λŒ€κΈ°μ—΄μ—μžˆλŠ” j 번째 μ‚¬λžŒμ˜ μ†μ„±μž…λ‹ˆλ‹€ (queue [0]은 λŒ€κΈ°μ—΄μ˜ 맨 μ•žμ—μžˆλŠ” μ‚¬λžŒμž…λ‹ˆλ‹€).

✍️ 풀이


정렬을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

큰 μˆ«μžκ°€ 무쑰건 μ•žμ— μ™€μ•Όλ§Œ ν•œλ‹€.
-> 큰 μˆ«μžλΆ€ν„° λ„£λŠ”λ‹€.

같은 μˆ«μžκ°€ μ—¬λŸ¬κ°œμ΄λ©° 같은 μˆ«μžλ„ μ•žμ— 올 수 μžˆλ‹€.
-> kκ°€ μž‘μ€ 숫자λ₯Ό λ¨Όμ € λ„£μ–΄μ•Ό 같은 숫자λ₯Ό ν¬ν•¨ν•˜λ©΄μ„œ k쑰건을 λ§Œμ‘±ν•  수 μžˆλ‹€.

λ”°λΌμ„œ, 배열을 λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•˜λ˜ μˆ«μžκ°€ κ°™λ‹€λ©΄ kλ₯Ό κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•΄μ•Ό ν•œλ‹€.

μ •λ ¬ ν›„, μˆœμ„œλŒ€λ‘œ κΊΌλ‚΄λ©΄μ„œ k번째 μœ„μΉ˜μ— λ„£μ–΄μ£Όλ©΄ λœλ‹€.

πŸ›  μ½”λ“œ


class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        people = sorted(people, key=lambda x:(-x[0], x[1]))
            
        result = []
        for i in range(len(people)):
            h, k = people[i]
            result.insert(k, [h, k])
        return result
                

πŸ“ 정리


🎈 참고


Book 링크

profile
Go Go

0개의 λŒ“κΈ€