[99클럽 코테스터디 2기][Python/비기너] 26번째 문제: Shuffle the Array

최민지·2024년 6월 14일
0
post-thumbnail

오늘의 주제는 배열!

[Shuffle the Array]

문제

입력과 출력

코드

class Solution:
    def shuffle(self, nums: List[int], n: int) -> List[int]:
        x=[]
        y=[]
        arr=[]

        for i in range(n):
            x.append(nums[i])
        for j in range(n,len(nums)):
            y.append(nums[j])

        for i in range(len(x)):
            arr.append(x[i])
            arr.append(y[i])

        return arr
        

알고리즘

nums는 x1,x2,x3,y1,y2,y3 순서로 되어 있으므로
nums 배열의 중간까지를 x라는 배열에 넣어주고 중간 이후부터 끝까지 y라는 배열에 넣어준다.
x와 y 배열에서 하나씩 번갈아가면서 요소를 arr에 넣어주고
반환환다.

회고

일단 처음에 문제를 읽자마자 이렇게 풀었다. 바로 accepted 되었지만 뭔가 찝찝한 기분.. 그래서 다른 분들은 어떻게 풀었나 좀 찾아보니

slice 함수를 잊고 있었다!
내가 쓴 for문 대신 slice 함수를 쓰면 좀 더 간결하게 작성할 수 있다!

slice로 작성하려다가 ... 다시 문제를 보는데 이상한 점 발견..


n길이가 전체 배열 길이가 아니라 x와 y의 각각의 길이인데...
전체 배열의 길이라고 생각했던 나는 for문을 n//2까지 돌렸음.. 근데 어떻게 통과된거지....?????? 나 진짜 모르겠어 왜 저게 맞았던 거지???????
왜?????????

아!!! 알았다
n을 ㅋㅋㅋㅋㅋㅋ 진짜 최민지 미치겠다...
n을 주어진 수가 아니라
n=len(nums) 길이를 받아서 가능했던 것 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
찾아서 다행이다~!!

(TIL을 써야하는 이유)

class Solution:
    def shuffle(self, nums: List[int], n: int) -> List[int]:
        x=[]
        y=[]
        arr=[]

        n=len(nums)
        for i in range(n//2):
            x.append(nums[i])
        for j in range(n//2,n):
            y.append(nums[j])

        for i in range(len(x)):
            arr.append(x[i])
            arr.append(y[i])

        return arr

정답 코드에 있던 아이 이 쪽으로 좌천,, 다시 풀어서 위를 바꿔야한다...

(수정완료)

class Solution:
    def shuffle(self, nums: List[int], n: int) -> List[int]:
        x=nums[:n]
        y=nums[n:len(nums)]
        arr=[]

        for i in range(len(x)):
            arr.append(x[i])
            arr.append(y[i])

        return arr

런타임은 별루 차이가 없다 ㅋㅋㅋㅋ 그치만 간결하니까!
slide 함수를 쓰면 이렇게 바꿀 수 있겠다~!

profile
공부..일기....

0개의 댓글