const input = require('fs')
.readFileSync(process.platform === 'linux' ? 0 : './data.txt')
.toString()
.split('\n');
const N = input.shift();
let arr = input.shift().split(" ").map(Number);
const studentsCount = input.shift();
for(let i=0; i<studentsCount; i++) {
const [sex, num] = input[i].split(" ").map(Number);
if(sex == 1){
manCalculate(arr, num)
}else{
girlCalculate(arr, num)
}
}
let output = '';
arr.forEach((data, index) => {
output += data + ' ';
if ((index + 1) % 20 === 0) {
output += '\n';
}
})
console.log(output)
function manCalculate(arr, num) {
for(let i=1; i<=arr.length; i++) {
//배수인 경우
if(i % num == 0) {
arr[i-1] = arr[i-1] == 1 ? 0 : 1;
}
}
}
function girlCalculate(arr, num) {
let isDone = false;
let left = num-2;
let right = num;
arr[num-1] = arr[num-1] == 1 ? 0 : 1;
while(!isDone){
if(left < 0 || right >= arr.length) {
isDone = true;
break;
}
if(arr[left] != arr[right]) {
isDone = true;
break;
}
arr[left] = arr[left] == 1 ? 0 : 1;
arr[right] = arr[right] == 1 ? 0 : 1;
left--;
right++;
}
}
문제 자체가 크게 어렵진 않았던 것 같은데 문제를 제대로 읽지 않아서 시간이 좀 걸렸다. 20개씩 줄바꿈 후 출력해야 하는데 그걸 못읽고 왜 정답인데 안되지?.. 계속 이러고 반례 찾아보고 있었다.
이번 문제의 교훈 문제도 좋지만 입력,출력 설명도 꼼꼼히 읽을것!