코딩 테스트/leetCode

[leetCode] 1470. Shuffle the Array (Python)

우주바다 2022. 10. 12. 09:56
728x90

▼ 문제 바로가기 (링크) ▼ 

https://leetcode.com/problems/shuffle-the-array/

 

Shuffle the Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 


[x₁, x₂,..., y₁, y₂,...] 형태의 2n개의 요소로 구성된 배열이 주어진다.
[x₁, y₁, x₂,, y₂,.. 형식으로 반환하는 문제.

 

*아래 첨자는 인덱스 번호를 의미한다.

예를 들어   [1,2,3,4,5,6]라는 배열이 있다면

[1,4,2,5,3,6] 순서로 반환한다.

 

n개씩 반으로 나누어 앞 요소들의 인덱스와

뒤 요소들 인덱스가 같은 것 끼리 붙이는 것과 같다.

class Solution:
    def shuffle(self, nums: List[int], n: int) -> List[int]:
        tmp1 = nums[:n]
        tmp2 = nums[n:]
        a = []

        for i in range(n):
            a.append(tmp1[i])
            a.append(tmp2[i])
        return(a)

슬라이싱 연산자 [:] 가 가장 먼저 떠올랐다.

리스트 슬라이싱으로 반으로 나눈 리스트를 각각 임시 변수에 저장하고 반환했다.

Runtime: 140 ms, faster than 18.88%
Memory Usage: 14.1 MB, less than 41.18% 
 

속도가 아쉬워서 discuss 구경하다가 발견한 코드.(출처링크)

https://leetcode.com/problems/shuffle-the-array/discuss/674426/Python-Very-simple-solution.

        ans = []
        for i in range(n):
            ans.append(nums[i])
            ans.append(nums[i+n])
        return ans

아니 이런 방법이..! 실행 결과는

Runtime: 59 ms, faster than 97.15%

Memory Usage: 14.2 MB, less than 41.18%

 

변수 2개  만든다고 뭐 얼마나 더 오래 걸리겠어? 싶었는데

차이가 엄청나다.. 다른 사람들 코드 열심히 보면서 배워야겠다..!

728x90
반응형