https://codeup.kr/problem.php?id=1096&rid=0
입력
바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다.
둘째 줄 부터 n+1 번째 줄까지 힌 돌을 놓을 좌표(x, y)가 n줄 입력된다.
n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력되지 않는다.
출력
흰 돌이 올려진 바둑판의 상황을 출력한다.
흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다.
import java.util.Scanner;
public class Codeup1097 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 흰 돌의 개수
int[][] arr = new int[19][19]; // 19 * 19 바둑판
// 흰 돌의 좌표를 나타내는 배열 저장
for (int i = 0; i < num; i++) {
arr[sc.nextInt() - 1][sc.nextInt() - 1] = 1;
} // 좌표 (0, 0) 에서 입력값 (1, 1) 을 나타내기 때문에 인덱스 -1
// 바둑판 출력
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.printf("%d ", arr[i][j]);
}
System.out.println();
}
}
}
2차원 배열과 반복문을 이용하는 문제로 진입했다.
처음엔 배열 생성만 했을 뿐인데 왜 모든 배열의 값이 출력하면 0 으로 나오는지 이해가 안됐는데 초기값이 0이기 때문이라는 당연한 이유였다.
좌표 찍는 방법(인덱스 -1)과 출력하는 방법이 이해가 안됐었는데 지금 다시 차근차근 문제를 풀어보니 '고작 이런게 이해가 왜 안됐었지' 하는 나의 멍청함을 다시 한번 느낄 수 있었다.