
문제 : 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[19][19];
int n;
int i,j,x, y;
for (i = 0; i < 19; i++)
{
for (j = 0; j < 19; j++)
{
scanf("%d",&arr[i][j]);
}
}
scanf("%d",&n);
for (i = 0; i < n; i++)
{
scanf("%d %d",&x,&y);
for (j = 0; j < 19; j++)
{
if (arr[x - 1][j] == 0)
arr[x - 1][j] = 1;
else
arr[x - 1][j] = 0;
}
for (j = 0; j < 19; j++)
{
if (arr[j][y-1] == 0)
arr[j][y-1] = 1;
else
arr[j][y-1] = 0;
}
}
for (i = 0; i < 19; i++)
{
for (j = 0; j < 19; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
먼저 19*19 크기의 2차원 배열을 선언한다.
그리고 for 문을 중첩해 바둑알이 깔려 있는 상황을 19 * 19 크기의 정수값으로 입력받는다.
그 다음 십자 뒤집기 횟수(n)을 입력 받아 n만큼 반복문을 돌려, 십자 뒤집기 좌표(x,y)까지 입력 받는다.
좌표를 입력 받고는 for문을 19번 돌려 먼저 가로 줄의 흑<->백을 바꾸고, 또 따로 for 문을 19번 돌려 세로 줄의 흑<->백을 바꾼다.
그리고 마지막에 for문을 중첩해 19*19 크기의 바둑판을 출력한다.
'Programming Languages > C' 카테고리의 다른 글
[P4C] CodeUp 1099 : [기초-2차원배열] 성실한 개미 (0) | 2021.02.25 |
---|---|
[P4C] CodeUp 1098 : [기초-2차원배열] 설탕과자 뽑기 (0) | 2021.02.25 |
[P4C] CodeUp 1094 : [기초-1차원배열] 이상한 출석 번호 부르기2 (0) | 2021.02.25 |
[P4C] CodeUp 1093 : [기초-1차원배열] 이상한 출석 번호 부르기1 (0) | 2021.02.25 |
[P4C] CodeUp 1091 : [기초-종합] 수 나열하기3 (0) | 2021.02.25 |