😎풀이

  1. nums를 오름차 순으로 정렬
  2. 정렬된 nums 2중 순회
    2-1. 현재 짝이 기존에 존재했다면 검사 생략
    2-2. 두 수의 차의 절댓값이 k와 동일하다면, 검사 기록에 추가하고 pairs 1 증가
    2-3. 두 수의 차의 절댓값이 k를 초과한다면, 이후 모든 수는 검사할 필요 없음
  3. 두 수의 차의 절댓값이 k와 동일한 고유한 짝의 수 반환
function findPairs(nums: number[], k: number): number {
    const n = nums.length
    const set = new Set<string>()
    const sorted = nums.toSorted((a, b) => a - b)
    let pairs = 0
    for(let i = 0; i < n; i++) {
        for(let j = i + 1; j < n; j++) {
            const key = `${sorted[i]},${sorted[j]}`
            if(set.has(key)) continue
            const diff = Math.abs(sorted[i] - sorted[j])
            if(diff === k) {
                set.add(key)
                pairs++
                continue
            }
            if(diff > k) break
        }
    }
    return pairs
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글