Pairs

sun202x·2022년 10월 19일
0

알고리즘

목록 보기
25/49

사이트: HackerRank
난이도: 미디움
분류: Search

문제

임의의 정수 배열과 타겟 값(정수)이 주어졌을 때, 배열 안 두 요소의 차가 타겟 값과 같은 경우의 수를 반환하라.

1. 나의 풀이

어렵지 않은 문제이다. set을 사용하여 적절히 기록하고 다시 루프를 돌면서 pair가 되는 숫자가 있는지 확인만 하면 되는데, 내가 계속 헤맨 것은 차 연산이었다.
차 연산을 하면 보통 더하거나, 빼야한다. 두 연산을 이용하려다 보니 로직이 복잡하게 꼬였고, 곰곰히 생각해보니 pair가 되는 숫자를 규칙 하나로만 정의하면 쉽게 풀릴거 같이 느껴졌다.
아니나 다를까 pair가 되는 수를 현재 요소 + k로 설정해서 해결하니 쉽게 로직이 풀렸다.
조금 더 기본적인 것들과 문제의 핵심을 바라볼 필요가 있을 것 같다...

function pairs(k, arr) {
    // Write your code here
    const s = arr.reduce((s, e) => s.add(e), new Set());
    return arr.reduce((count, e) => s.has(e + k) ? count + 1 : count, 0);
}

2. 다른사람의 풀이

바로 풀 수 있었던 문제들은 지금은 생략하고 추후 더 효율적인 문제 풀이법을 찾아보도록 하겠다.

profile
긍정적으로 살고 싶은 개발자

0개의 댓글