스위치 켜고 끄기 1244

PublicMinsu·2023년 1월 10일
0

문제

접근 방법

구현과 관련된 문제이다. 구현을 하란 대로 해주면 된다.
여성의 경우 대칭된 부분까지 스위치를 바꿔주고 남성의 경우 배수만큼 스위치를 바꿔주면 되는 것이다.

코드

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int N, S;
    cin >> N;
    vector<bool> sw(N + 1);
    for (int i = 1; i <= N; ++i)
    {
        bool s;
        cin >> s;
        sw[i] = s;
    }
    cin >> S;
    while (S--)
    {
        int gender, num;
        cin >> gender >> num;
        if (gender == 1)
        {
            for (int i = num; i <= N; i += num)
            {
                sw[i] = !sw[i];
            }
        }
        else
        {
            int low, high;
            low = high = num;
            while (true)
            {
                if (low == 1 || high == N)
                {
                    break;
                }
                if (sw[low - 1] == sw[high + 1])
                {
                    --low;
                    ++high;
                }
                else
                    break;
            }
            for (int i = low; i <= high; ++i)
            {
                sw[i] = !sw[i];
            }
        }
    }
    for (int i = 1; i <= N; ++i)
    {
        cout << sw[i] << " ";
        if (!(i % 20))
            cout << "\n";
    }
    return 0;
}

풀이

쉬운 문제이지만 20개씩 나눠서 출력해줘야 한다는 점을 놓치면 안 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글