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

0

프로그래머스

목록 보기
53/128
post-thumbnail

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

정렬된 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의합니다.
  • 각 칼럼의 값을 i로 나눈 나머지를 구할 때 i는 1부터 시작한다는 것에 주의하자

  • 0으로 나누기/나머지 연산을 하는 경우 signal: floating point exception (core dumped) 발생

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int COL;
bool cmp(const vector<int>& a,const vector<int>& b){
    if(a[COL-1] < b[COL-1]) return true;
    if(a[COL-1] > b[COL-1]) return false;
    return (a[0] > b[0]);
}

int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
    COL = col;
    
    sort(data.begin(), data.end(), cmp);
    
    vector<int> S_i;
    for(int i = 0; i<data.size(); ++i){
        int sum = 0;
        for(int j = 0; j<data[i].size(); ++j){
            sum += (data[i][j] % (i+1));
        }
        S_i.push_back(sum);
    }
    
    int answer = S_i[row_begin-1];
    for(int i = row_begin; i<row_end; ++i){
        answer = answer ^ S_i[i];
    }
    return answer;
}

📌참고자료

profile
Be able to be vulnerable, in search of truth

0개의 댓글