초보코딩
LeetCode - 1920. Build Array from Permutation
07514673
2021. 8. 4. 16:36
Problem
Given a zero-based permutation nums (0-indexed), build an array ans of the same length where ans[i] = nums[nums[i]] for each 0 <= i < nums.length and return it. A zero-based permutation nums is an array of distinct integers from 0 to nums.length - 1 (inclusive). Example 1: Input: nums = [0,2,1,5,3,4] Output: [0,1,2,4,5,3] Explanation: The array ans is built as follows: ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]] = [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]] = [0,1,2,4,5,3] Example 2: Input: nums = [5,0,1,2,3,4] Output: [4,5,0,1,2,3] Explanation: The array ans is built as follows: ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]] = [nums[5], nums[0], nums[1], nums[2], nums[3], nums[4]] = [4,5,0,1,2,3] |
Solution
Class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans = [] for i in range(len(nums)): ans.append(nums[nums[i]]) return ans |
내 생애 처음 풀어 본 리드코드 문제 결국은 해결책을 보고 이해를 했다.
ans = []는 배열을 지정했다.
for in range는 반복문이고, len(nums)는 어떻게 반복 할 것인가에 대한 조건이다.
len은 길이다. Example 1에 보면 숫자가 6개가 있다. 그렇다 이 for in range는 6번 반복 될 것이다.
그리고 append는 배열에 추가 하기 위해 쓰여진 함수이다. 그렇다면 nums([nums[i]])는 무엇인가...
나는 이 문제에서 고비를 맞았다. 너무 어려웟...ㅠ

nums([nums[i]])이것을 다시 풀어보면 nums(0,2,1,5,3,4) 이렇게 풀이 할 수 있다.
그럼다면 Exmple1에서 nums = [0,2,1,5,3,4]을 입력했을때
nums(0) = 0 // nums의 0번째는 0이다.
nums(2) = 1 // nums의 2번째는 1이다.
nums(1) = 2 // nums의 1번째는 2이다.
nums(5) = 4 // nums의 5번째는 4이다.
nums(3) = 5 // nums의 3번째는 5이다.
nums(4) = 3 // nums의 4번째는 3이다.
Output
[0,1,2,4,5,3]
열심히해얒...
