[프로그래머스] 테이블 해시 함수 / JavaScript / Level 2

KimYoungWoong·2023년 2월 21일
1

Programmers

목록 보기
49/60
post-thumbnail

🚩문제 주소


📄 풀이

구현

문제에 있는 설명을 그대로 해석해서 구현하기만 하면 되는 문제입니다.
1. 주어진 데이터를 col-1번째 원소 기준으로 오름차순 정렬하고, 동일한 데이터가 있다면 0번째 원소를 기준으로 내림차순 정렬합니다.
2. 정렬된 데이터에서 row_begin-1부터 row_end까지의 데이터 튜플을 각각의 인덱스로 나누고 더해줍니다.
3. 더한 값을 정답변수와 누적 XOR을 합니다.

XOR 부분은 구글에서 XOR연산자를 검색해서 찾아보면 됩니다.
(저도 처음 사용해봤습니다...ㅎ)



👨‍💻 코드

function solution(data, col, row_begin, row_end) {
  let answer = 0;

  // 데이터를 col-1 기준으로 오름차순 정렬
  // 동일한게 있다면 0번째 원소를 기준으로 내림차순 정렬
  const sort_data = data.sort((a, b) => {
    if (a[col - 1] < b[col - 1]) {
      return a[col - 1] - b[col - 1];
    } else if (a[col - 1] === b[col - 1]) {
      return b[0] - a[0];
    }
  });

  //
  for (let i = row_begin; i <= row_end; i++) {
    // 정렬된 데이터에서 i-1번째부터 각 값을 i로 나누어서 더하기
    const temp = sort_data[i - 1].reduce((a, c) => a + (c % i), 0);
    // ^는 XOR연산자, answer에 누적하기
    answer ^= temp;
  }

  return answer;
}

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글