github.com/taemin-kwon93 Github 보러가기 ->

Data Structures and Algorithms/Problems

CodeUp 예제 풀이 1097번문제, 바둑알 십자 뒤집기

태민Kwon 2022. 4. 7. 12:27

1097 : [기초-2차원배열] 바둑알 십자 뒤집기

코드업 1097번 문제로 바로가기

바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.

참고
가로 번호, 세로 번호를 사용할 수 있는 2차원 배열을 사용하면
이러한 형태를 쉽게 기록하고 사용할 수 있다. 물론 더 확장한 n차원 배열도 만들 수 있다.

 

1097번 문제, Taemin's Github 바로가기✨


 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다.
십자 뒤집기 횟수(n)가 입력된다.
십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다.

 

 해당 문제의 입력 예시 :

0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
2
10 10
12 12

 

 19 * 19 를 채울 검은돌(0)과 흰돌(1)을 전부 입력받아 저장합니다.

이후 기준좌표가 될 두 지점(2개)를 입력받아 coordinates에 저장합니다.

 

 coordinates의 값 만큼 반복하여,

기준 좌표값 X와 Y를 입력받고 
X행과 Y열 값을 조건에 따라 변경해줍니다.

값의 변경이 완료된 2차원 배열 goBaduk을 출력해줍니다.

 

Geeks for Geeks에서의 다차원 배열 설명

 

Multidimensional Arrays in Java - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

저는 2차원 배열을 처음 학습할 때 연습장에 그려가며 이해 했는데요.

Row(행), Column(열), 인덱스 0번째 행에 0번째 열 = x[0][0] 라고 생각한 뒤

5 x 5 판을 그려봤습니다.

 

ㅁㅁㅁㅁㅁ

ㅁㅁㅁㅁㅁ

ㅁㅁㅁㅁㅁ

ㅁㅁㅁㅁㅁ

ㅁㅁㅁㅁㅁ

 

예를들어, 만약 1부터 25까지의 수가 저장 돼 있다면, 

int[][] arrExam =  

{{1, 2, 3, 4, 5},  //[0]번째 행, [0~4]번째 열
{6, 7, 8, 9, 10}, //[1]번째 행, [0~4]번째 열
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};

 

 

2 Dimention Arrays in Java

출력 결과로 볼수있는 내용은 아래 캡쳐된 사진과 같습니다.

 

 바둑돌 뒤집기로 돌아간다면,

2차원 배열에 입력될 10, 10이 어떤 위치를 뜻하는지 알 수 있습니다.

바로 위 화면 21번째 줄부터 23번째 줄에 있는 출력의 결과가 무엇일지도 쉽게 짐작할 수 있을것 입니다.