https://school.programmers.co.kr/learn/courses/30/lessons/147354
๋ฌธ์ ์ค๋ช
์ํธ๊ฐ ๊ด๋ฆฌํ๋ ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ํ ์ด๋ธ์ ๋ชจ๋ ์ ์ ํ์ ์ธ ์ปฌ๋ผ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํ ์ด๋ธ์ 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 ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋ด ํด์ค
๋ฌธ์ ํ์ด๋ณด๋ค ๋ฌธ์ ์ดํด๊ฐ ์ด๋ ค์ ๋ ๋ฌธ์ ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์ฃผ์ํ ์ ์ ์กฐ๊ฑด์ผ๋ก ์ฃผ์ด์ง๋ col, row_begin, row_end ๋ฑ์ ๊ฐ์ด ์ธ๋ฑ์ค ๊ฐ์ด ์๋๋ผ๋ ๊ฒ์ด๋ค. ๋๋ ์ฒ์์ ๋ณ์๋ช ๋๋ฌธ์ ์ธ๋ฑ์ค ๊ฐ์ด๋ผ๊ณ ์ฐฉ๊ฐํ๋ ์ค์๋ฅผ ํ๋ค.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> data, int col, int row_begin, int row_end) {
int answer = 0;
auto comp = [&col](const vector<int>& v1, const vector<int>& v2)->bool
{
int idx = col-1;
if(v1[idx] == v2[idx])
return v1[0] > v2[0];
else
return v1[idx] < v2[idx];
};
sort(data.begin(), data.end(), comp);
for(int i = row_begin-1; i < row_end; ++i)
{
int s_i = 0;
for(int j = 0; j < data[i].size(); ++j)
{
s_i += data[i][j] % (i+1);
}
answer = answer ^ s_i;
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - N-Queen(C++) (0) | 2023.07.31 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ(C++) (0) | 2023.07.28 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๊ฑฐ์ค๋ฆ๋(C++) (0) | 2023.07.25 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - [์นด์นด์ค ์ธํด] ์์ ์ต๋ํ(C++) (0) | 2023.07.24 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์(C++) (0) | 2023.07.23 |