프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- data를 조건에 따라 정렬
- data의 row_begin <= i <= row_end에 3번을 수행한 값을 따로 배열에 저장
- 해당 배열의 값들을 누적하여 birwise XOR 연산 수행
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int idx;
// 비교자
int cmp(vector<int> a, vector<int> b) {
if(a[idx] == b[idx]) return a[0] > b[0];
return a[idx] < b[idx];
}
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
int answer = 0;
idx = col - 1;
// data를 조건에 따라 정렬
sort(data.begin(), data.end(), cmp);
vector<int> s;
// row_begin <= i <= row_end
for(int i = row_begin - 1; i <= row_end - 1; i++) {
int num = 0;
// S_i는 i 번째 행의 튜플에 대해 각 컬럼의 값을 i로 나눈 나머지들의 합
for(int j = 0; j < data[i].size(); j++)
num += data[i][j] % (i + 1);
s.push_back(num);
}
answer = s[0];
// 해시 값은 s 배열의 모든 값을 누적하여 bitwise XOR 한 값
for(int i = 1; i < s.size(); i++)
answer = answer ^ s[i];
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 당구 연습 (0) | 2024.03.12 |
---|---|
[프로그래머스/C++] 두 원 사이의 정수 쌍 (0) | 2024.03.12 |
[프로그래머스/C++] 광물 캐기 (0) | 2024.03.12 |
[프로그래머스/C++] 과제 진행하기 (0) | 2024.03.12 |
[프로그래머스/C++] 거리두기 확인하기 (0) | 2024.03.12 |