https://www.acmicpc.net/problem/1244
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
/******** 전역변수 ********/
/******** 함 수 ********/
int main(void) {
/******** C++ INIT ********/
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
/******** 지역변수 ********/
int input1;
int input2;
int state;
int sexual;
int number;
vector<int> light;
/******** 구 현 ********/
cin >> input1;
// 스위치 상태 벡터에 삽입
for (int i = 0; i < input1; i++) {
cin >> state;
light.push_back(state);
}
// 학생과 수 받기
cin >> input2;
for (int i = 0; i < input2; i++) {
cin >> sexual >> number;
// 남자라면
if (sexual == 1) {
// 받은 수의 배수에 해당되는 스위치를 반전
for (int j = number - 1; j < light.size(); j += number) {
if (light[j] == 1) light[j] = 0;
else light[j] = 1;
}
}
// 여자라면
else if (sexual == 2){
// 받은 수를 기준으로 양쪽으로 이동
for (int j = number - 1, k = number - 1; j < light.size() && k >= 0; j++, k--) {
// 양 스위치가 같다면
if (light[j] == light[k]) {
// 스위치 반전
if (light[j] == 1) light[j] = 0;
else light[j] = 1;
// 스위치 위치가 같다면 PASS
if (j == k) continue;
// 스위치 위치가 다르다면 반전
if (light[k] == 1) light[k] = 0;
else light[k] = 1;
}
else break;
}
}
}
// 스위치 출력
for (int i = 0; i < light.size(); i++) {
if (i != 0 && i % 20 == 0) cout << endl;
cout << light[i] << " ";
}
}
'알고리즘' 카테고리의 다른 글
C++ 알고리즘 - 2193 이친수 (0) | 2025.02.13 |
---|---|
C++ 알고리즘 - 14501 퇴사 (0) | 2025.02.12 |
C++ 알고리즘 - 13305 주유소 (1) | 2025.02.10 |
C++ 알고리즘 - 17478 재귀함수가 뭔가요? (1) | 2025.02.10 |
C++ 알고리즘 - 2559 수열 (0) | 2025.01.28 |