๐ŸŒฒ Altu-Bitu/๊ตฌํ˜„&์‹œ๋ฎฌ๋ ˆ์ด์…˜

[BOJ S4][C++] ๋ฐฑ์ค€ 1244๋ฒˆ: ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

์„ ๋‹ฌ 2022. 10. 17. 18:29
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1244

 

1244๋ฒˆ: ์Šค์œ„์น˜ ์ผœ๊ณ  ๋„๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ผœ์ ธ ์žˆ์œผ๋ฉด 1, ๊บผ์ ธ์žˆ์œผ๋ฉด 0์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์ด์— ๋นˆ์นธ์ด ํ•˜๋‚˜์”ฉ

www.acmicpc.net

 

๋ฌธ์ œ

1๋ถ€ํ„ฐ ์—ฐ์†์ ์œผ๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ์Šค์œ„์น˜๋“ค์ด ์žˆ๋‹ค. ์Šค์œ„์น˜๋Š” ์ผœ์ ธ ์žˆ๊ฑฐ๋‚˜ ๊บผ์ ธ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. <๊ทธ๋ฆผ 1>์— ์Šค์œ„์น˜ 8๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ‘1’์€ ์Šค์œ„์น˜๊ฐ€ ์ผœ์ ธ ์žˆ์Œ์„, ‘0’์€ ๊บผ์ ธ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•™์ƒ ๋ช‡ ๋ช…์„ ๋ฝ‘์•„์„œ, ํ•™์ƒ๋“ค์—๊ฒŒ 1 ์ด์ƒ์ด๊ณ  ์Šค์œ„์น˜ ๊ฐœ์ˆ˜ ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ„์–ด์ฃผ์—ˆ๋‹ค. ํ•™์ƒ๋“ค์€ ์ž์‹ ์˜ ์„ฑ๋ณ„๊ณผ ๋ฐ›์€ ์ˆ˜์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์Šค์œ„์น˜๋ฅผ ์กฐ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

๋‚จํ•™์ƒ์€ ์Šค์œ„์น˜ ๋ฒˆํ˜ธ๊ฐ€ ์ž๊ธฐ๊ฐ€ ๋ฐ›์€ ์ˆ˜์˜ ๋ฐฐ์ˆ˜์ด๋ฉด, ๊ทธ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ฆ‰, ์Šค์œ„์น˜๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋„๊ณ , ๊บผ์ ธ ์žˆ์œผ๋ฉด ์ผ ๋‹ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์€ ์ƒํƒœ์—์„œ ๋‚จํ•™์ƒ์ด 3์„ ๋ฐ›์•˜๋‹ค๋ฉด, ์ด ํ•™์ƒ์€ <๊ทธ๋ฆผ 2>์™€ ๊ฐ™์ด 3๋ฒˆ, 6๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค.

์—ฌํ•™์ƒ์€ ์ž๊ธฐ๊ฐ€ ๋ฐ›์€ ์ˆ˜์™€ ๊ฐ™์€ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์€ ์Šค์œ„์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ขŒ์šฐ๊ฐ€ ๋Œ€์นญ์ด๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์€ ์Šค์œ„์น˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ตฌ๊ฐ„์„ ์ฐพ์•„์„œ, ๊ทธ ๊ตฌ๊ฐ„์— ์†ํ•œ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๋ฐ”๊พผ๋‹ค. ์ด๋•Œ ๊ตฌ๊ฐ„์— ์†ํ•œ ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ํ™€์ˆ˜๊ฐ€ ๋œ๋‹ค.

์Šค์œ„์น˜ ๋ฒˆํ˜ธ์Šค์œ„์น˜ ์ƒํƒœ
โ‘  โ‘ก โ‘ข โ‘ฃ โ‘ค โ‘ฅ โ‘ฆ โ‘ง
0 1 0 1 0 0 0 1

<๊ทธ๋ฆผ 1>

์˜ˆ๋ฅผ ๋“ค์–ด <๊ทธ๋ฆผ 2>์—์„œ ์—ฌํ•™์ƒ์ด 3์„ ๋ฐ›์•˜๋‹ค๋ฉด, 3๋ฒˆ ์Šค์œ„์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ 2๋ฒˆ, 4๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™๊ณ  1๋ฒˆ, 5๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ, <๊ทธ๋ฆผ 3>๊ณผ ๊ฐ™์ด 1๋ฒˆ๋ถ€ํ„ฐ 5๋ฒˆ๊นŒ์ง€ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๋ฐ”๊พผ๋‹ค. ๋งŒ์•ฝ <๊ทธ๋ฆผ 2>์—์„œ ์—ฌํ•™์ƒ์ด 4๋ฅผ ๋ฐ›์•˜๋‹ค๋ฉด, 3๋ฒˆ, 5๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฏ€๋กœ 4๋ฒˆ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋งŒ ๋ฐ”๊พผ๋‹ค.

์Šค์œ„์น˜ ๋ฒˆํ˜ธ์Šค์œ„์น˜ ์ƒํƒœ
โ‘  โ‘ก โ‘ข โ‘ฃ โ‘ค โ‘ฅ โ‘ฆ โ‘ง
0 1 1 1 0 1 0 1

<๊ทธ๋ฆผ 2>

์Šค์œ„์น˜ ๋ฒˆํ˜ธ์Šค์œ„์น˜ ์ƒํƒœ
โ‘  โ‘ก โ‘ข โ‘ฃ โ‘ค โ‘ฅ โ‘ฆ โ‘ง
1 0 0 0 1 1 0 1

<๊ทธ๋ฆผ 3>

์ž…๋ ฅ์œผ๋กœ ์Šค์œ„์น˜๋“ค์˜ ์ฒ˜์Œ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๊ฐ ํ•™์ƒ์˜ ์„ฑ๋ณ„๊ณผ ๋ฐ›์€ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ํ•™์ƒ๋“ค์€ ์ž…๋ ฅ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž๊ธฐ์˜ ์„ฑ๋ณ„๊ณผ ๋ฐ›์€ ์ˆ˜์— ๋”ฐ๋ผ ์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์—ˆ์„ ๋•Œ, ์Šค์œ„์น˜๋“ค์˜ ๋งˆ์ง€๋ง‰ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์Šค์œ„์น˜ ๊ฐœ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ผœ์ ธ ์žˆ์œผ๋ฉด 1, ๊บผ์ ธ์žˆ์œผ๋ฉด 0์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์ด์— ๋นˆ์นธ์ด ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค. ์…‹์งธ ์ค„์—๋Š” ํ•™์ƒ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ํ•™์ƒ์ˆ˜๋Š” 100 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ๋„ท์งธ ์ค„๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ค„๊นŒ์ง€ ํ•œ ์ค„์— ํ•œ ํ•™์ƒ์˜ ์„ฑ๋ณ„, ํ•™์ƒ์ด ๋ฐ›์€ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‚จํ•™์ƒ์€ 1๋กœ, ์—ฌํ•™์ƒ์€ 2๋กœ ํ‘œ์‹œํ•˜๊ณ , ํ•™์ƒ์ด ๋ฐ›์€ ์ˆ˜๋Š” ์Šค์œ„์น˜ ๊ฐœ์ˆ˜ ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ํ•™์ƒ์˜ ์„ฑ๋ณ„๊ณผ ๋ฐ›์€ ์ˆ˜ ์‚ฌ์ด์— ๋นˆ์นธ์ด ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค.

์ถœ๋ ฅ

์Šค์œ„์น˜์˜ ์ƒํƒœ๋ฅผ 1๋ฒˆ ์Šค์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ์Šค์œ„์น˜๊นŒ์ง€ ํ•œ ์ค„์— 20๊ฐœ์”ฉ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 21๋ฒˆ ์Šค์œ„์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด ์Šค์œ„์น˜์˜ ์ƒํƒœ๋Š” ๋‘˜์งธ ์ค„ ๋งจ ์•ž์— ์ถœ๋ ฅํ•œ๋‹ค. ์ผœ์ง„ ์Šค์œ„์น˜๋Š” 1, ๊บผ์ง„ ์Šค์œ„์น˜๋Š” 0์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ , ์Šค์œ„์น˜ ์ƒํƒœ ์‚ฌ์ด์— ๋นˆ์นธ์„ ํ•˜๋‚˜์”ฉ ๋‘”๋‹ค.

 

ํ’€์ด

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

int n;
vector<int> swit;

void toggle(int index) {
    swit[index] = !swit[index];
    return;
}

void boy(int num) {
    for(int i=1; i<=n; i++)
        if(i%num == 0)
            toggle(i);
    return;
}

void girl(int num) {
    toggle(num);  // ์ค‘์•™์€ ๋ฌด์กฐ๊ฑด ๋ฐ”๊พผ๋‹ค
    
    for(int i=1; true; i++) {
        int left = num-i;
        int right = num+i;
        
        if(left < 1 || right > n || swit[left] != swit[right])
            return;  // ์ธ๋ฑ์Šค๋ฅผ ๋„˜์–ด์„œ๊ฑฐ๋‚˜ ๋Œ€์นญ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ข…๋ฃŒ
        
        toggle(left);
        toggle(right);
    }
}


void solution(int gender, int number) {
    if(gender==1)
        boy(number);
    else
        girl(number);
    
    return;
}

int main() {
    ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    // ์ž…๋ ฅ
    cin >> n;
    swit.assign(n+1, 0);
    for(int i=1; i<=n; i++)
        cin >> swit[i];
    
    // ํ’€์ด
    int m;
    cin >> m;
    while(m--) {
        int gender, number;
        cin >> gender >> number;
        solution(gender, number);
    }
    
    // ์ถœ๋ ฅ
    for(int i=1; i<=n; i++) {
        cout << swit[i] << " ";
        
        if(i%20 == 0)
            cout << "\n";
    }
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•