코드업(CodeUp) 풀이/C언어 기초 100제

코드업[CodeUp] (C) 1097번 풀이

개발윗미 2021. 8. 23. 15:28

C로 구현한 1097번 바둑알 십자 뒤집기 문제 풀이입니다.

 

https://codeup.kr/problem.php?id=1097 

 

[기초-2차원배열] 바둑알 십자 뒤집기(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr


#include <stdio.h>

int main() {
	int p[20][20] = {0,};
	int n, a, b;
	for(int i=1; i<=19; i++) {
		for(int j=1; j<=19; j++) {
			scanf("%d", &p[i][j]);
		}
	}
	scanf("%d", &n);
	for(int i=1; i<=n; i++) {
		scanf("%d %d", &a, &b);
		for(int j=1; j<=19; j++) {
			p[a][j] = !p[a][j];
			p[j][b] = !p[j][b];
		}	 
	}
	for(int i=1; i<=19; i++) {
		for(int j=1; j<=19; j++) {
			printf("%d ", p[i][j]);
		}
		printf("\n");
	}
}

 

바둑판을 다루기 위해 2차원 배열을 사용한다. 2차원 배열을 사용하면 가로번호, 세로번호를 통해 바둑판 형태의 문제를

 

쉽게 다룰 수 있다.

 

첫번째 반복문을 통해 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력되도록 한다.

 

그 후 십자 뒤집기 횟수를 의미하는 n을 입력받은 후 두번째 반복문을 통해 십자 뒤집기 좌표가 횟수(n) 만큼 입력되도록 한다.

 

또한, 입력받은 좌표를 기준으로 가로 줄과 세로 줄의 흑돌 혹은 백돌을 반대로 뒤집는다.