문제링크
숫자를 담은 배열 nums가 주어진다.
nums에는 single number을 제외한 나머지 요소가 모두 3개씩 들어있다.
ex) nums = [1,1,1,2,2,2,3,3,3,4]
이때 single number을 구하여라.
접근 방법
nums의 중복값을 제거하고 배열의 합을 구한 뒤 3을 곱하면
nums 배열의 합과 2개의 single number만큼 차이가 나게 될 것이라는 아이디어로 접근하였다.
1. 중복값 제거
const uniqueNums = [...new Set(nums)];
2. 기존 nums의 합과 중복값을 제거한 uniqueNums의 합을 구하기const sumNums = nums.reduce((acc, cur) => acc += cur); const sumUniqueNums = uniqueNums.reduce((acc, cur) => acc += cur);
3. (uniqueNums의 합 * 3 - nums의 합) / 2 로 single number 구하기const output = ((sumUniqueNums * 3) - sumNums) / 2;
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
const uniqueNums = [...new Set(nums)];
const sumNums = nums.reduce((acc, cur) => acc += cur);
const sumUniqueNums = uniqueNums.reduce((acc, cur) => acc += cur);
const output = ((sumUniqueNums * 3) - sumNums) / 2;
return output
};
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode] Number Of Matching Subsequences (0) | 2022.07.20 |
---|---|
[LeetCode] Pascals Triangle (0) | 2022.07.19 |
[LeetCode] Matchsticks To Square (0) | 2022.07.12 |
[LeetCode] Combination Sum (0) | 2022.07.11 |
[LeetCode] Min Cost Climbing Stairs (0) | 2022.07.10 |