문제정보
1s 128MB
문제
n x m 크기의 지도가 있다.
이 지도를 1 * 1 크기의 구역으로 구분하고, 각 구역을 행 번호(i)와 열 번호(j)를 조합하여 표시하기로 하였다. 행은 위에서부터 아래까지 순서대로 1부터 n으로 번호를 매기고, 열은 왼쪽에서부터 오른쪽까지 순서대로 1부터 m으로 번호를 매겼다.
n=4, m=5일 때 각 구역의 위치를 표현하면 다음과 같다.
이 지도에서 여행하고자 하는 구역 k개를 표시하여 보관해두려고 한다.
여행하고자 하는 구역을 표시한 지도의 상태를 출력하는 프로그램을 작성하시오.
이 지도를 1 * 1 크기의 구역으로 구분하고, 각 구역을 행 번호(i)와 열 번호(j)를 조합하여 표시하기로 하였다. 행은 위에서부터 아래까지 순서대로 1부터 n으로 번호를 매기고, 열은 왼쪽에서부터 오른쪽까지 순서대로 1부터 m으로 번호를 매겼다.
n=4, m=5일 때 각 구역의 위치를 표현하면 다음과 같다.
| 1, 1 | 1, 2 | 1, 3 | 1, 4 | 1, 5 |
| 2, 1 | 2, 2 | 2, 3 | 2, 4 | 2, 5 |
| 3, 1 | 3, 2 | 3, 3 | 3, 4 | 3, 5 |
| 4, 1 | 4, 2 | 4, 3 | 4, 4 | 4, 5 |
이 지도에서 여행하고자 하는 구역 k개를 표시하여 보관해두려고 한다.
여행하고자 하는 구역을 표시한 지도의 상태를 출력하는 프로그램을 작성하시오.
입력형식
첫째 줄에 정수 n, m, k가 공백으로 구분되어 입력된다. n은 행의 개수, m은 열의 개수, k는 여행하고자 하는 구역의 개수이다. (1≦n, m≦100, 1≦k≦10000)
다음 k개의 줄에는 i, j가 공백으로 구분되어 입력된다. i는 여행하려는 구역의 행위치, j는 열위치를 나타낸다.
(1≦ i, j≦100)
다음 k개의 줄에는 i, j가 공백으로 구분되어 입력된다. i는 여행하려는 구역의 행위치, j는 열위치를 나타낸다.
(1≦ i, j≦100)
출력형식
여행하고자 하는 구역을 표시한 지도의 상태를 출력한다.
여행하고자 하는 구역은 1, 아닌 곳은 0으로 출력하며, 같은 행에서 구역은 공백으로 구분한다.
여행하고자 하는 구역은 1, 아닌 곳은 0으로 출력하며, 같은 행에서 구역은 공백으로 구분한다.
힌트
이 문제는 먼저 지도의 크기에 따라 2차원 배열을 만들고 배열의 모든 값을 0으로 초기화 해야 한다. 다음으로 여행하고자 하는 위치의 배열 값을 1로 바꾼 후, 2차원 배열의 값을 행우선으로 출력하면 해결할 수 있다.
배열을 선언할 때는 입력 범위의 최대 값을 기준으로 선언해야 함에 유의한다. 또한, 구역의 번호가 1부터 시작하므로 실제 크기보다 1개 더 크게 만들어 주자.
배열을 선언할 때는 입력 범위의 최대 값을 기준으로 선언해야 함에 유의한다. 또한, 구역의 번호가 1부터 시작하므로 실제 크기보다 1개 더 크게 만들어 주자.
int n, m, k;
cin >> n >> m >> k;
int arr[101][101]; // main함수 밖에 선언하면 모든 값이 0으로 초기화되므로 아래 0으로 초기화하는
for(int i=0; i<n; i++){ // 작업을 하지 않아도 된다.
for(int j=0; j<m; j++){
arr[i][j] = 0;
}
}
i
for(int i=0; i<k; i++){
int a, b;
cin >> a >> b;
arr[a][b] = 1; // 여행 구역를 1로 바꾼다.
}
예시 1
입력예시
4 3 2 2 1 4 3
출력예시
0 0 0 1 0 0 0 0 0 0 0 1
예시 2
입력예시
1 2 5 1 2 1 1 1 2 1 1 1 1
출력예시
1 1