쌓고 쌓다
[프로그래머스] 테이블 해시 함수 C++ 풀이 및 해설 본문
https://school.programmers.co.kr/learn/courses/30/lessons/147354
풀이 방법
주어진 순서대로 해시 함수를 동작하도록하면 되는 문제라 특별한 풀이 방법은 없다.
그런데 C++ 정렬 함수를 만들어 사용하는 방법을 알아야한다.
앞저네 포스팅한 내용이다.
https://non-stop.tistory.com/242
참고하자!
전체 코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int column = 1;
bool compare(vector<int> a, vector<int> b) {
if(a[column-1] < b[column-1]) { // col번째 컬럼의 값을 기준으로 오름차순 정렬
return true;
} else if(a[column-1] == b[column-1]) { // 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬
if(a[0] > b[0]) {
return true;
} else {
return false;
}
} else {
return false;
}
}
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
int answer = 0;
column = col; // compare 함수에서 col을 쓸 수 있도록 전역변수 사용
sort(data.begin(), data.end(), compare);
int result = -1;
for(int i=row_begin-1; i<=row_end-1; i++) {
int modSum = 0;
for(int j=0; j<data[0].size(); j++)
modSum += data[i][j]%(i+1);
if(result==-1) // result가 -1이라면 첫 갱신이므로 modSum으로 갱신
result=modSum;
else
result = result ^ modSum; // XOR 연산
}
answer=result;
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 디펜스 게임 C++ 풀이 및 해설 (1) | 2023.12.24 |
---|---|
[프로그래머스] 리코쳇 로봇 C++ 풀이 및 해설 (1) | 2023.12.20 |
[프로그래머스] 점 찍기 C++ 풀이 및 해설 (1) | 2023.11.01 |
[프로그래머스] 미로 탈출 C++ 풀이 및 해설 (0) | 2023.10.29 |
[프로그래머스] 가장 큰 정사각형 찾기 C++ 풀이 및 해설 (0) | 2023.10.28 |
Comments