본문 바로가기
LeetCode

1929. Concatenation of Array

by 싼쵸 2022. 3. 20.
반응형

출근해서 1시간 정도 LeetCode 문제를 풀기 시작했고, 현재 60문제 정도 풀었다. 근데 기억이 안난다. 그래서 기록을 하기로 결정했다.

내가 처음 푼 LeetCode 문제다. 

 

문제 1929. Concatenation of Array

 

문제 

문제 해석 본
길이 n의 정수 배열 num을 지정하면 길이 2n의 배열 ans를 생성하려고 합니다. 여기서 0 <= i < n (0-168)에 대해 ans[i] == nums[i + n] == nums[i] == nums[i]입니다.

특히 ans는 2개의 num 배열의 연결입니다.

어레이를 반환한다.

주어진 nums의 요소를 두번 반복해서 다시 배열에 담아 출력하면 되는 문제다.

LeetCode는 다 좋으나, 영어로 되어있어 문제를 이해하는 데 생각보다 시간이 오래걸린다ㅠㅠ

 

나의 예전 풀이

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

ans 배열을 만들고, 2번째요소까지는 nums[i] 요소와 순서가 같기 때문에 넣었고, 그 이후 부터는 nums.length와 i를 이용해서 그 이후 요소를 넣어 줬다. 배열의 요소는 0 부터 시작하기 때문에 가능한 방법이다. 

예를 들어 nums= [1,2,3] 이면 length는 3이다. 하지만 인덱스 번호의 경우는 0부터는 시작해 nums 배열의 경우는 마지막 인덱스 번호가 2이다. 그래서 다음 인덱스 번호는 3이다. 그래서 nums.length 가 3이고 i = 0 부터 시작하기 때문에 위의 코드로 정리 된것이다.

나의 현재 풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var getConcatenation = function(nums) {
    let ans = []
    for(let i = 0; i < 2; i++){
        for(let i of nums) ans.push(i)
    }
    return ans
};

 

이번 풀이는 무조건 2번만 반복하면 되니까 for문을 2번만 반복 시켰고, 그 다음 for of 문을 이용해서 요소를 빼내 push를 사용해서 ans 배열에 담아줬다. 그전 풀이보다 코드는 한 줄 줄었고, 무엇보다 새로운 풀이를 생각해낸 내 자신이 뿌듯하다. 확실히 조금씩 문제를 꾸준히 풀었던게 도움이 된 모양이다 ㅋㅋㅋ

 

 

반응형

'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
1920. Build Array from Permutation  (0) 2022.05.16

댓글