๐
2025-10-22
๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ค๋ช
์ํธ๊ฐ ๊ด๋ฆฌํ๋ ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ํ
์ด๋ธ์ ๋ชจ๋ ์ ์ ํ์
์ธ ์ปฌ๋ผ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํ
์ด๋ธ์ 2์ฐจ์ ํ๋ ฌ๋ก ํํํ ์ ์์ผ๋ฉฐ ์ด์ ์ปฌ๋ผ์ ๋ํ๋ด๊ณ , ํ์ ํํ์ ๋ํ๋
๋๋ค.
์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ธฐ๋ณธํค๋ก์ ๋ชจ๋ ํํ์ ๋ํด ๊ทธ ๊ฐ์ด ์ค๋ณต๋์ง ์๋๋ก ๋ณด์ฅ๋ฉ๋๋ค. ์ํธ๋ ์ด ํ
์ด๋ธ์ ๋ํ ํด์ ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ์์ต๋๋ค.
ํด์ ํจ์๋ col, row_begin, row_end์ ์
๋ ฅ์ผ๋ก ๋ฐ์ต๋๋ค.
ํ
์ด๋ธ์ ํํ์ col๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋, ๋ง์ฝ ๊ทธ ๊ฐ์ด ๋์ผํ๋ฉด ๊ธฐ๋ณธํค์ธ ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํฉ๋๋ค.
์ ๋ ฌ๋ ๋ฐ์ดํฐ์์ S_i๋ฅผ i ๋ฒ์งธ ํ์ ํํ์ ๋ํด ๊ฐ ์ปฌ๋ผ์ ๊ฐ์ i ๋ก ๋๋ ๋๋จธ์ง๋ค์ ํฉ์ผ๋ก ์ ์ํฉ๋๋ค.
row_begin โค i โค row_end ์ธ ๋ชจ๋ S_i๋ฅผ ๋์ ํ์ฌ bitwise XOR ํ ๊ฐ์ ํด์ ๊ฐ์ผ๋ก์ ๋ฐํํฉ๋๋ค.
ํ
์ด๋ธ์ ๋ฐ์ดํฐ data์ ํด์ ํจ์์ ๋ํ ์
๋ ฅ col, row_begin, row_end์ด ์ฃผ์ด์ก์ ๋ ํ
์ด๋ธ์ ํด์ ๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
#include <vector>
#include <algorithm>
using namespace std;
int getMod(vector<int>& v, int modNum)
{
int result = 0;
for(int& i:v)
{
result += i % modNum;
}
return result;
}
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
int answer = 0;
col-= 1;
sort(data.begin(), data.end(),
[&](vector<int> a, vector<int> b)
{
if(a[col]<b[col]) return true;
else if(a[col] == b[col] && a[0]>b[0]) return true;
else return false;
});
for(int i=row_begin; i<=row_end; i++)
{
vector<int> v = data[i-1];
int si = getMod(v,i);
if(i==row_begin)
{
answer = si;
}
else
{
answer = answer^si;
}
}
return answer;
}
์ถ์ฒ ํ๋ก๊ทธ๋๋จธ์ค: ํ
์ด๋ธ ํด์ ํจ์