오늘의 주제는 배열!
문제
입력과 출력
코드
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 함수를 쓰면 이렇게 바꿀 수 있겠다~!