-
프로그래머스 - 테이블 해시 함수 [C++]문제 풀이/프로그래머스 2024. 1. 12. 15:45반응형
이 문제는 정렬을 이용한 문제이다. 문제의 요구사항을 그대로 구현하면 간단하게 풀리는 문제였다.
한 가지 주의할 점은 인덱스들이 전부 [1, N] 로 주어짐에 반해, data 는 [0, N - 1] 인 것만 헷갈리지 않으면 쉽게 풀 수 있다.
#include <string> #include <vector> #include <algorithm> using namespace std; int sortIndex; bool compare(vector<int>& left, vector<int>& right) { if (left[sortIndex] == right[sortIndex]) { return left[0] > right[0]; } return left[sortIndex] < right[sortIndex]; } vector<vector<int>> makeSortedData(vector<vector<int>> data) { sort(data.begin(), data.end(), compare); return data; } int makeHash(vector<vector<int>> data, int rowBegin, int rowEnd) { int result = 0; for (int i = rowBegin - 1; i <= rowEnd - 1; i++) { int si = 0; for (int node : data[i]) { si += node % (i + 1); } result ^= si; } return result; } int solution(vector<vector<int>> data, int col, int row_begin, int row_end) { int answer = 0; sortIndex = col - 1; vector<vector<int>> sortedData = makeSortedData(data); answer = makeHash(sortedData, row_begin, row_end); return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 리코쳇 로봇 [C++] (1) 2024.01.13 프로그래머스 - 점 찍기 [C++] (2) 2024.01.12 프로그래머스 - 시소 짝꿍 [C++] (1) 2024.01.11 프로그래머스 - 숫자 카드 나누기 [C++] (0) 2024.01.10 프로그래머스 - 마법의 엘리베이터 [C++] (0) 2024.01.10