초보코딩

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] 

 

열심히해얒...