Number of Ways Where Square of Number Is Equal to Product of Two Numbers
- 질문 내용 : Array 2개가 주워 지는데 Array 1번의 값을 제곱한 값을 Array 2번에서 선택한 2개의 Elements 곱으로 만들 수 있겠는가?
- 접근 방법
해당 질문의 예를 보자면 이렇다.
[2], [1,2,2,4]
이렇게 주어졌다고 했을때 2*2 = 1*4, 2*2 이렇게 2가지 경우가 가능 하다.
접근 방법은 two sum을 사용해서 처리 했다. leetcode.com/problems/two-sum/
위에 질문을 다음과 같이 변경해 보겠다
[a], [b,c,c,d] 라고 했을 때
a*a = a/b의 값이 나머지 ,c,c,d에 있는 가를 찾는 방법이다.
여기서 a/b를 d라고 한다면, a/d의 값은 반대로 b가 된다.
여기서 b와 d는 서로 연관관계를 갖음으로 b를 조회 할때 map에 b를 넣어놓고
d에 도달했을 때 b를 찾아서 return 하면 된다.
글을 잘 못써서 two sum을 안풀어본 사람은 어려울것 같은데 상기 링크 문제 풀고 나면 이해하기 쉬울 것 같다.
마지막으로 실수 한게 있었는데 Array 1이 'a*a'대상이 되지만 Array2도 'a*a' 대상이 되어야 한다.
2번 처리 해야한다.
var numTriplets = function(nums1, nums2) {
let result = 0;
for(let num of nums1){
result += findNum(num * num,nums2);
}
for(let num of nums2){
result += findNum(num * num,nums1);
}
return result;
function findNum(powerValue, arr){
let map = new Map();
let count = 0;
for(let i = 0; i < arr.length; i++){
if(map.has(powerValue/arr[i])){
count += map.get(powerValue/arr[i]);
}
map.set(arr[i],~~map.get(arr[i])+1);
}
return count;
}
};
728x90
반응형
'Problem Solving' 카테고리의 다른 글
1579. Remove Max Number of Edges to Keep Graph Fully Traversable (0) | 2020.09.06 |
---|---|
5509. Minimum Deletion Cost to Avoid Repeating Letters (0) | 2020.09.06 |
5507. Replace All ?'s to Avoid Consecutive Repeating Characters (0) | 2020.09.06 |
자물쇠와 열쇠 (0) | 2020.09.06 |
가사 검색 (0) | 2020.09.04 |