본문 바로가기
Algorithm/문제풀이

[HackerRank] Picking Numbers (Easy) by javascript

by 썸머워즈 2022. 4. 21.
반응형

▷ 문제 : Picking Numbers (Easy)

 

Picking Numbers | HackerRank

What's the largest size subset can you choose from an array such that the difference between any two integers is not bigger than 1?

www.hackerrank.com

▷ 해결 날짜 : 2022.04.21
▷ 소요 시간 : 20분
▷ 풀이 과정 :

모든 요소들의 절대 편차가 1보다 같거나 작아야 하는 경우의 배열 길이를 반환하는 문제이다.당연히 배열에는 여러 숫자들이 배치되어 있는데 거기서 골라서 뽑아내야 하는 문제다.

 

하지만 절대편차가 <= 1 이 이루어 질려면 앞뒤로 +- 1 인 숫자밖에 짝을 이룰 수가 없기 때문에, 이 원리를 이용해서 풀면 쉽게 풀 수 있다.

 

우선 제한 사항에 보면 배열의 최대 길이는 100인것을 볼 수 있는데,기준이 될 배열을 만들어주고 매개변수로 들어온 배열의 숫자에 해당하는 인덱스 값을 1씩 증가시켜주면 된다.

 

그리고 앞뒤로 더한 값 중에 최대값을 뽑아내면 문제 해결이다.


▷ 구현

function pickingNumbers(a) {
    const arr = Array(100).fill(0);
    a.forEach(v => {
        arr[v]++;
    });

    let result = 0;
    for(let i = 0; i < arr.length - 1 ; i++){
        result = Math.max(result, arr[i] + arr[i + 1]);
    }
    return result;
}


▷ 복기 :

문제는 되게 복잡해 보이나 자세히 보면 생각보다 쉬운 문제라는 것을 알 수 있다.뭔가 영어와 수학의 짬뽕이 되게 난이도를 높여주고 있다.

반응형


댓글

TOP