teddy8 Full Stack Software Engineer

CodeUp - 기초100제(1098)

2019-06-22
teddy8

문제

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;
}


Comments

Content