코딩테스트

[프로그래머스] 테이블 해시 함수 (JS)

여유로운 프론트엔드 개발자 2024. 11. 20. 17:47

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이

  (1) 조건에 맞게 data를 정렬한다.

  (2) 정렬된 data에서 각 튜플의 요소를 인덱스 i + 1로 나눈 나머지를 구하고, 그 나머지들을 모두 합산한다.

  (3) XOR 연산자 ^을 사용하여 answer를 구한다.

function solution(data, col, row_begin, row_end) {
    let answer = 0;
    
    data.sort((a, b) => {
        if (a[col - 1] === b[col - 1]) return b[0] - a[0];
        return a[col - 1] - b[col - 1];
    })
    
    for (let i = row_begin - 1; i <= row_end - 1; i++) {
        const rowSum = data[i].reduce((sum, value) => sum += value % (i + 1), 0);
        answer ^= rowSum;
    };

    return answer;
}

 

결론

단순 구현 문제이다.

다중 조건 정렬과 배열 요소의 합 구하기, 비트 단위 XOR 할당 연산자를 알면 쉽게 해결할 수 있다.