728x90
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
#include <iostream>
using namespace std;
int main() {
int n, arr[101], std, g, y, i, k;
cin>>n; //스위치의 개수 입력 받기
for(i=1; i<=n; i++)
{
cin>>arr[i]; //스위치의 상태 입력 받기
}
cin>>std; //학생 수 입력 받기
for(k=0; k<std; k++)
{
cin>>g>>y; //학생의 성별, 번호 입력
if(g==1) //남학생일 때
{
for(i=1; i<=n; i++)
{
if(i%y==0) //배수일 때
arr[i]=!arr[i]; //스위치의 상태를 바꾼다.
}
}
else //여학생일 때
{
arr[y]=!arr[y]; //우선 자기자신(중심)의 상태를 바꾼다.
for(i=1; arr[y+i] == arr[y-i]; i++) // <x o x> || <x가 같다면 실행>
{
if(y+i>n || y-i<1) //인덱스가 벗어나면 멈춘다.
break;
arr[y+i]=!arr[y+i]; //뒤집
arr[y-i]=!arr[y-i]; //뒤집
}
}
}
for(i=1; i<=n; i++)
{
cout<<arr[i]<<" ";
if(i%20==0) //20개의 숫자를 출력했다면 줄바꾸기
cout<<"\n";
}
}
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[백준] 1157. 단어 공부 <C++> (0) | 2020.04.15 |
---|---|
[백준] 14563. 완전수 <C++> (0) | 2020.04.14 |
[백준] 10804. 카드 역배치 <C++> (0) | 2020.04.14 |
[백준] 3495. 아스키 도형 <C++> (0) | 2020.04.13 |
[백준] 16463. 13일의 금요일 <C++> (0) | 2020.03.16 |
댓글