문제 : 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int h, w;
int n;
int l, d, x, y;
int arr[100][100]={};
scanf("%d %d",&h,&w);
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d %d %d %d",&l,&d,&x,&y);
if (d == 0)
{
for (int j = y - 1;j < y + l-1;j++)
arr[x - 1][j] = 1;
}
else if (d == 1)
{
for (int j = x - 1;j < x + l-1;j++)
arr[j][y-1] = 1;
}
}
for (int i = 0;i < h;i++) {
for (int j = 0;j < w;j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
먼저 세로(h), 가로(w)의 최대 크기가 100이기에, 배열의 크기가 100*100인 배열을 선언해 0으로 초기화한다.
그리고 막대의 개수(n)을 입력받고 n만큼 for 문을 돌리는데, 이때 각 막대의 길이(l), 방향(d), 좌표(x,y)도 입력받는다.
모두 입력 받은 다음, 막대의 방향(d)가 0일 때와 1일 때로 나누어 각각 for문을 돌린다.
만약 d==0일 때는 가로 방향으로 막대의 길이(l)만큼 1로 할당해주고, d==1일 때는 세로 방향으로 막대의 길이(l)만큼 1로 할당해준다.
그리고 마지막에 for 문을 중첩해 h*w 크기 만큼의 격자판를 출력해준다.
'Programming Languages > C' 카테고리의 다른 글
[P4C] C언어 코딩 도장 : UNIT 34 (0) | 2021.03.03 |
---|---|
[P4C] CodeUp 1099 : [기초-2차원배열] 성실한 개미 (0) | 2021.02.25 |
[P4C] CodeUp 1097 : [기초-2차원배열] 바둑알 십자 뒤집기 (0) | 2021.02.25 |
[P4C] CodeUp 1094 : [기초-1차원배열] 이상한 출석 번호 부르기2 (0) | 2021.02.25 |
[P4C] CodeUp 1093 : [기초-1차원배열] 이상한 출석 번호 부르기1 (0) | 2021.02.25 |