티스토리 뷰
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int column;
bool cmp(vector<int>&v1, vector<int>&v2)
{
if(v1[column] == v2[column]) return v1[0] > v2[0];
return v1[column] < v2[column];
}
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
int answer = 0;
column = col-1;
sort(data.begin(), data.end(), cmp);
for(int i=row_begin; i<=row_end; i++)
{
int sum = 0;
for(int j=0; j<data[0].size(); j++)
{
sum += (data[i-1][j] % i) ;
}
answer ^= sum;
}
return answer;
}
주어진 조건을 차근차근 풀면 되는 문제이다.
다만 인덱스를 주의해서 풀어주어야 한다.
col 번째 컬럼의 값을 기준으로 정렬 할 때, 벡터는 0부터 시작하지만 col 값은 1부터 시작한다.
따라서 정렬할 때는 col-1한 값을 통해 정렬을 해야한다.
마찬가지로 3번 조건을 통해 누적합을 구해줄 때도 data[i-1][j]을 하여 row_begin ~ row_end 값과 인덱스 차이에 주의하여햐 한다.
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스 2레벨] 거리두기 확인하기 (C++) (0) | 2025.03.18 |
---|---|
[프로그래머스 2레벨] 디펜스 게임 (C++) (0) | 2025.03.17 |
[프로그래머스 2레벨 ] 리코쳇 로봇 (C++) (0) | 2025.03.12 |
[프로그래머스 2레벨] 행렬 테두리 회전하기 (C++) (0) | 2025.03.05 |
[프로그래머스 2레벨] 수식 최대화 (C++) (0) | 2025.03.04 |