프로그래머스 테이블 해시 함수 JavaScript

2023년 1월 14일

프로그래머스 테이블 해시 함수

문제 풀이

입력으로 data, col, row_begin, row_end가 주어질 때,
테이블(data)의 튜플을 col 번째 컬럼의 값을 기준으로 오름차순으로 정렬한다. 값이 같으면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬한다.
정렬된 데이터에서 S_i를 i번째 행의 튜플에 대해 각 컬럼의 값을 i로 나눈 나머지들의 합으로 정의하고,
row_begin <= i <= row_end인 모든 S_i를 누적하여 bitwise XOR 한 값을 해시 값으로 반환한다. (Bitwise XOR (^))
문제의 설명 그대로 하나씩 구현해 주면 되는 간단한 문제였다.

solution.js
function solution(data, col, row_begin, row_end) {
    let answer = 0;
    data.sort((a, b) => {
        if (a[col-1] > b[col-1]) {
            return 1;
        }
        if (a[col-1] < b[col-1]) {
            return -1;
        }
        return b[0] - a[0];
    })

    for (let i = row_begin; i <= row_end; i++) {
        const S_i = data[i-1].reduce((accumulator, currentValue) => {
            return accumulator + (currentValue % i);
        }, 0) 
        answer ^= S_i;
    }
    return answer;
}

댓글