본문 바로가기
LeetCode

1920. Build Array from Permutation

by 싼쵸 2022. 5. 16.
반응형

내가 벌써 82문제나 풀었다니, 이제 진짜 정리 할 시간이 된것 같아 문제를 정리해보려고한다.
더이상 미루다가는 진짜 계속 안할 것 같아서 ㅋㅋㅋ그래서 생각정리할 시간도 필요하니까

 

문제

나의 문제 접근 방식

내가 유심히 살펴보니,nums안에 요소들이, 결과 배열의 인덱스번호로 활용됐다.

그래서 몇개월 지난 지금 보니 그때의나는 옆에 힌트를 보고 풀이에 성공한 것같다.

 

나의 예전 풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var buildArray = function(nums) {
 let arr = [];
    for(let i = 0; i < nums.length; i++){
        arr[i] = nums[nums[i]];
       
    }
   return arr;
};

결과 배열 arr를 선언했고, for문 반복을 통해  arr에 배열 요소를 담는다.

여기서 nums[nums[i] 가 처음 보면 이해가 갸우뚱 할 수있는데 노트에 써서 보면 이해가 바로된다.
nums[nums[0]] 은 0이다 ==> arr[0] = 0

nums[nums[1]] 은 1이다.==> arr[1] = 1

왜냐하면 nums[1]은 2인데 한번 더 nums가 감싸고 있어 여기에 적어보면

nums[2] 가 되서 1이 나온다. 그 결과 arr[1] = 1이다.

이렇게 보면 위코드에 대한  감이 올 거다.

 

나의 현재 풀이 

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var buildArray = function(nums) {
    let arr = []
    for(let i of nums){
        let idx = nums.indexOf(i)
        arr[idx] = nums[i]
    }
    return arr
};

예전과 다른 점은 nums[nums[i]] 코드가 사라지고, 좀 더 이해하기 쉽게 idx 로 인덱스번호를 받는 변수를 생성해 대입했다.

for문도 of 를 써서 요소를 꺼내 바로 활용 할 수 있게 수정했다.
큰 변화는 아니지만, 그래도 몇달전에 보다는 조금 다른 시야로 쉽게 하려고 노력했다.

 

다른 사람의 풀이

var buildArray = function(nums) {
    return nums.map(a=>nums[a]);
};

보자마자 역시나 탁...와 이렇게도 가능하구나 생각이 들었다. 신선한점은 map 함수는 새로운 배열을 반환하는 함수라서, 따로 배열은 선언안해도 된다. 그리고 순차적으로 요소를 뽑아내고,  push함수 처럼 요소가 뒤로 추가되서 정답이 나온다.

 

결과

아쉽게도 메모리나 복잡도에 대한 공부를 시작을 못해서 설명을 못하는 게 아쉽다. 공부하자 !!!

 

도움이나 잘못된 점은 과감하게 알려주시면 감사하겠습니다.

 

반응형

'LeetCode' 카테고리의 다른 글

1512. Number of Good Pairs  (0) 2022.05.28
1672. Richest Customer Wealth  (0) 2022.05.26
2011. Final Value of Variable After Performing Operations  (0) 2022.05.25
1480. Running Sum of 1d Array  (0) 2022.05.17
1929. Concatenation of Array  (0) 2022.03.20

댓글