문제
URL : https://codeup.kr/problemsetsol.php?psid=23
소스코드
/* 문제 : 설탕과자 뽑기
input : 5 5
3
2 0 1 1
3 1 2 3
4 1 2 5
output : 1 1 0 0 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 0 0 1
설명 : 세로(h), 가로(w)
막대의 개수(n)
각 막대의 길이(l), 방향(d), 좌표(x, y) 입력
1 <= w, h <= 100
1 <= n <= 10
d = (0 or 1)
1 <= x <= w
1 <= y <= h
단, 막대가 격자판을 벗어나는 경우는 입력되지 않는다.
*/
#include <iostream>
using namespace std;
int Condition_Check(int l, int d, int x, int y, int h, int w);
int main()
{
const int max_width = 101;
const int max_height = 101;
int a[max_width][max_height] = {0};
int h, w, n, l, d, x, y;
cin >> h >> w;
cin >> n;
if (!(w >= 1) || !(h <= 100) || !((n >= 1) && (n <= 10))) {
cout << "입력조건 불일치" << endl;
return -1;
}
for (int i = 0; i < n; i++) {
cin >> l >> d >> x >> y;
if (Condition_Check(l, d, x, y, h, w) == -1) {
cout << "입력조건 불일치" << endl;
return -1;
}
for (int k = 0; k < l; k++) {
if (d == 1)
a[x - 1 + k][y - 1] = 1;
else
a[x - 1][y - 1 + k] = 1;
}
}
// 결과 출력
for (int i = 0; i < h; i++) {
for (int k = 0; k < w; k++) {
cout << a[i][k] << " ";
}
cout << endl;
}
return 0;
}
int Condition_Check(int l, int d, int x, int y, int h, int w)
{
if (!((d == 0) || (d == 1)) ||
!((x >= 1) && (x <= w)) ||
!((y >= 1) && (y <= h)))
return -1;
else
return 0;
}