반응형
문제
문제 설명
nums 배열의 요소들이 인덱스 번호 0번부터 끝까지 검사하면서 같은 숫자가 몇 개인지 구한 다음 결과 값으로 돌려주는 거다.
내 현재 풀이
/**
* @param {number[]} nums
* @return {number}
*/
var numIdenticalPairs = function(nums) {
let cnt = 0
for(let i in nums){
i = Number(i);
for(let j = i+1; j < nums.length; j++){
nums[i] === nums[j] && cnt++;
}
}
return cnt;
};
for문을 두번 돌려 정답을 구했고, 중간에 Number 함수를 쓴 이유는 0번째 인덱스일 때 01로 결과가 나와서 i를 숫자로 변환해주고 넘겨주었다.
내 예전 풀이
/**
* @param {number[]} nums
* @return {number}
*/
var numIdenticalPairs = function(nums) {
let cnt = 0;
for(let i = 0; i < nums.length; i++){
for(let j =nums.length-1; j >=0; j--){
if(nums[i] ===nums[j] && i < j){
cnt++;
}
}
}
return cnt;
};
풀이 방식이 크게 달라지지는 않았지만, 풀이 시간이 달라지긴 했다. 가장 큰 차이점 예전 풀이 두 번째 for문에서 뒤부터 체크를 해주었다는 정도??
다른 사람 풀이
// time O(N) space O(N)
var numIdenticalPairs = function(nums) {
const map = {}
let count = 0
for (const number of nums) {
if (map[number]) {
count += map[number];
map[number] += 1;
} else {
map[number] = 1;
}
}
return count
};
객체 형태로 담아서 답을 구한 형태다.
객체가 없으면 1을 넣어주었고, 반복된 요소가 발견 있으면 + 1을 해주었다.
왜 이번에 나는 이런 생각을 못했을까 ㅠ
반응형
'LeetCode' 카테고리의 다른 글
1431. Kids With the Greatest Number of Candies (0) | 2022.05.31 |
---|---|
771. Jewels and Stones (0) | 2022.05.30 |
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 |
댓글