작성
·
283
0
안녕하세요.
2583번 문제에서 예제가 왜
5 7 3
0 2 4 4
1 1 2 5
4 0 6 2
이렇게 받는지 잘 모르겠습니다ㅠㅠ
그리고
for(int i = 0; i < k; i++) {
cin >> x1 >> y1 >> x2 >> y2;
for(int x = x1; x < x2; x++) {
for(int y = y1; y < y2; y++) {
a[y][x] = 1;
}
}
}
cin 으로 x1 y1 x2 y2 받는 줄 아래에
왜 x가 x2랑 엮이고 y가 y2랑 엮이는지 잘 모르겠습니다ㅠㅠ
문제 풀기전에 예제입력&예제출력이 왜 이렇게 나오나 먼저 좀 생각을 해보고 코드 작성하는데 한참을 들여다 봤는데 잘 이해가 안되니 도저히 감이 안와서 이렇게 여쭙니다.
답변 1
1
안녕하세요 Yello님 ㅎㅎ
첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다.
문제지문을 보면.
자 K개의 줄에 따라 x1, y1, x2, y2가 나온다고 되어있습니다.
그래서
0 2 4 4
1 1 2 5
4 0 6 2
이러한 3줄이 나오게 되는 것이죠.
또한 여기서
x1, y1, x2, y2를 해석해보면
우리가 사각형을 좌표로 나타낸다고 해볼게요.
음..
{0, 0}, {2, 0}, {0, 2}, {2, 2} 의 꼭지점을 가진 사각형을 예로 들어보죠. (x, y)
자 지금 제가 4개의 꼭지점을 들었죠? 근데 이거를 이 문제에서 주어지듯이
왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점
으로만 나타낼 수도 있어요.
즉, {0, 0}, {2, 2} 으로 표현할 수 있습니다.
그렇게 한다음
x : 0 ~ 2
y : 0 ~ 2
로 좌표를 만들어 해당 정점을 채워가며 해당 사각형을 만들 수 있는것이죠.
감사합니다.
아아..! 이해했습니다ㅠㅠ 아 감사합니다.