-
99클럽(2기) - 코테스터디 17일차 TIL # ArrayAlgorithm 2024. 6. 15. 10:41
LeetCode - 1470.Suffle the Array
Given the array nums consisting of 2n elements in the form [x1,x2,...,xn,y1,y2,...,yn].
Return the array in the form [x1,y1,x2,y2,...,xn,yn].
1. 첫 번째 풀이
1) 리스트 초기화
answer에 빈 리스트를 할당한다.
2) 0부터 n까지의 범위 순회
nums의 i번째 요소와 nums의 i + n번째 요소를 순서대로 더해준다.
3) 최종 리스트 반환
from typing import List class Solution: def shuffle(self, nums: List[int], n: int) -> List[int]: answer = [] for i in range(n): answer.append(nums[i]) answer.append(nums[i + n]) return answer
2. 두 번째 풀이
첫 번째 문제를 풀면서 i번째 요소와 nums의 i + n번째 요소를 순서대로 더하지 않는 방법이 있을텐데라고 생각했는데, 챗지피티가 딱 그렇게 풀어줬다.
1) 리스트 컴프리헨션으로 0부터 2n -1 까지의 범위를 순회한 결과 반환리스트 컴프리헨션으로 풀었다. 0부터 2n-1까지의 범위를 순회하면서 각 인덱스 i에 대해서 아래 결과 연산을 수행한 결과를 반환한다.
- 짝수 인덱스인 경우 nums[i // 2]를 가져온다.
- 홀수 인덱스인 경우 nums[i // 2 + n]를 가져온다.
from typing import List class Solution: def shuffle(self, nums: List[int], n: int) -> List[int]: return [nums[i // 2 + (i % 2) * n] for i in range(2 * n)]
3. 느낀점
두 번째 풀이를 혼자 생각해내지 못 해서 아쉬웠다. nums[i // 2 + (i % 2) * n] 이 부분이 어려웠다.
'Algorithm' 카테고리의 다른 글
99클럽(2기) - 코테스터디 19일차 TIL # 완전 탐색 (0) 2024.06.17 99클럽(2기) - 코테스터디 18일차 TIL # Array (0) 2024.06.15 99클럽(2기) - 코테스터디 16일차 TIL # Graph (0) 2024.06.13 99클럽(2기) - 코테스터디 15일차 TIL # Graph (0) 2024.06.12 99클럽(2기) - 코테스터디 14일차 TIL # Binary Search (1) 2024.06.11