반응형
출근해서 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 |
댓글