[TIL] 251022

๊น€์„ธํฌยท2025๋…„ 10์›” 22์ผ

โœ๏ธToday I Learned

๐Ÿ“… 2025-10-22

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ•จ์ˆ˜
  • UE: AI ๊ฐ•์˜
  • UE: GAS ํŠน๊ฐ• - 02

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ•จ์ˆ˜

๋ฌธ์ œ ๋งํฌ
๋ฌธ์ œ ์„ค๋ช…
์™„ํ˜ธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•œ ํ…Œ์ด๋ธ”์€ ๋ชจ๋‘ ์ •์ˆ˜ ํƒ€์ž…์ธ ์ปฌ๋Ÿผ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ 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 ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • 1 โ‰ค data์˜ ๊ธธ์ด โ‰ค 2,500
  • 1 โ‰ค data์˜ ์›์†Œ์˜ ๊ธธ์ด โ‰ค 500
  • 1 โ‰ค data[i][j] โ‰ค 1,000,000
    - data[i][j]๋Š” i + 1 ๋ฒˆ์งธ ํŠœํ”Œ์˜ j + 1 ๋ฒˆ์งธ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • 1 โ‰ค col โ‰ค data์˜ ์›์†Œ์˜ ๊ธธ์ด
  • 1 โ‰ค row_begin โ‰ค row_end โ‰ค data์˜ ๊ธธ์ด

ํ’€์ด

#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;
}

๐Ÿ’ก ๋А๋‚€ ์  (What I Felt)


์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ•จ์ˆ˜

0๊ฐœ์˜ ๋Œ“๊ธ€