CodingTest/LeetCode

[LeetCode] 454. 4Sum II, Medium

뜸부깅 2025. 4. 9. 15:47
반응형

1. 문제

  • 배열 4개가 주어질 때, 각 요소의 합이 0이되는 튜플의 수 를 구하라.

2. 해결

function fourSumCount(nums1: number[], nums2: number[], nums3: number[], nums4: number[]): number {
    const map = new Map<number, number>();
    const n = nums1.length;

    let ans = 0;

    for(let i =0; i< n;i++) {
        for(let j=0; j<n;j++) {
            map.set(nums1[i] + nums2[j], (map.get(nums1[i] + nums2[j]) ?? 0) +1)
        }
    }

    for(let i =0; i< n;i++) {
        for(let j=0; j<n;j++) {
            ans += map.get(-(nums3[i] + nums4[j])) ?? 0;        
        }
    }

    return ans;
};
  • 4개의 배열이기 때문에 모든 경우의 수를 탐색하면 당연히 시간 초과가 날 것.
  • 근데 못풀었다.
  • 접근 방식이 안떠오른다 도저히.
  • map을 이용해서 2개의 배열씩 등장할 수 있는 값과 등장 회수를 key-value로 관리
  • 다른 2개의 배열을 이용해 -를 붙여 해당 key가 있으면 등장 회수를 더해준다.