반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
테이블의 데이터 data와 해시 함수에 대한 입력 col, row_begin, row_end이 주어졌을 때 테이블의 해시 값을 return 하도록 solution 함수를 완성해주세요.
풀이방법
문제 설명에 있는 내용을 따라만 하면 되는 간단한 문제입니다.
1. 테이블의 튜플의 col번째 컬럼을 기준으로 오름차순 정렬, 첫 번째 칼럼을 기준으로 내림차순 정렬
sort(data.begin(), data.end(), [&](auto& A, auto& B){
if (A[col-1] == B[col-1])
return A[0] > B[0];
return A[col-1] < B[col-1];
});
2. 정렬된 데이터의 i번째 행의 튜플에 대하여 각 칼럼의 값을 i로 나눈 나머지의 합을 S_i 찾기
3. 모든 S_i를 xor한 값을 반환
int answer = 0;
for (int i = row_begin-1; i < row_end; i++)
{
int S_i = 0;
for (int& n : data[i])
S_i += n % (i+1);
answer ^= S_i;
}
정답 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
sort(data.begin(), data.end(), [&](auto& A, auto& B){
if (A[col-1] == B[col-1])
return A[0] > B[0];
return A[col-1] < B[col-1];
});
int answer = 0;
for (int i = row_begin-1; i < row_end; i++)
{
int S_i = 0;
for (int& n : data[i])
S_i += n % (i+1);
answer ^= S_i;
}
return answer;
}
반응형
LIST
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 줄 서는 방법 [Lv. 2] (C++) (1) | 2024.11.25 |
---|---|
프로그래머스 디펜스 게임 [Lv.2] (C++) (1) | 2024.11.23 |
프로그래머스 거리두기 확인하기 [Lv. 2] (C++) (0) | 2024.11.18 |
프로그래머스 가장 큰 정사각형 찾기 [Lv. 2] (C++) (0) | 2024.11.17 |
프로그래머스 광물 캐기 [Lv. 2] (C++) (2) | 2024.11.16 |