몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 2] 테이블 해시 함수 {언어 : JavaScript} 본문

알고리즘

프로그래머스 [Lv. 2] 테이블 해시 함수 {언어 : JavaScript}

스위태니 2024. 4. 20. 18:46

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/147354

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

function solution(data, col, row_begin, row_end) {
    let answer = 0;
    
    const n = data.length;
    const m = data[0].length;
    
    col -= 1;
    row_begin -= 1;
    
    data.sort((a, b) => a[col] - b[col] || b[0] - a[0]);
    
    for (let i = row_begin; i < row_end; i++) {
        let sumOfRemainders = 0
        const mod = i + 1;
        for (let j = 0; j < m; j++) {
            sumOfRemainders += data[i][j] % mod;
        };
        answer ^= sumOfRemainders;
    };
    
    return answer;
}

풀이 방법

  1. 정렬하고
  2. 나머지값을 더한다.
  3. ^= 를 사용해서 XOR값을 answer에 넣어준다.

느낀점

  • 말만 XOR인줄 알았는데 진짜로 XOR 값을 구하는 문제였다.