본문 바로가기
백준 알고리즘/구현

스위치 켜고 끄기

by paysmile 2022. 3. 8.

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

 

1244번: 스위치 켜고 끄기

첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩

www.acmicpc.net

#include <iostream>

using namespace std;
const int MAX = 105;
int sw[MAX];
int n;
int m;

int main(void) {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> sw[i];
	}

	cin >> m;
	for (int i = 0; i < m; i++) {
		int gen, num;
		cin >> gen >> num;

		if (gen == 1) { //남학생
			int index = 1;
			for (; index*num <= n; index++) {
				if (sw[index*num] == 1) sw[index*num] = 0;
				else sw[index*num] = 1;
			}
		}
		else {//여학생
			int left = num - 1;
			int right = num + 1;
			if (sw[num] == 0) sw[num] = 1;
			else sw[num] = 0;
			for (; left > 0 && right <= n; left--, right++) {
				if (sw[left] == sw[right]) {
					if (sw[left] == 0) sw[left] = 1;
					else sw[left] = 0;
					if (sw[right] == 0) sw[right] = 1;
					else sw[right] = 0;
				}
				else break;
			}
		}
	}

	for (int i = 1; i <= n; i++) {
		cout << sw[i];
		if (i % 20 == 0) cout << endl;
		else cout << " ";
	}
}

'백준 알고리즘 > 구현' 카테고리의 다른 글

줄기세포 배양 C++  (0) 2022.04.23
로봇 시뮬레이션 C++  (0) 2022.03.09
치즈 C++  (0) 2022.03.07
마법사 상어와 토네이도 C++  (0) 2022.02.15
마법사 상어와 비바라기 C++  (0) 2022.02.05