정보올림피아드 참외밭 문제 ( http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1520&sca=2060 ) 인데요.
모르겠어서 답안지를 봤는데, 의외로 짧은 코드가 나와서 놀랐습니다.
#include <stdio.h>
int main() {
int K;
scanf("%d", &K);
int paper[500][500] = { 0, };
int six[6][2] = { 0, };
int farm = 0;
int max_width = 0;
int max_height = 0;
for (int i = 0; i < 6; i++) {
scanf("%d %d" , &six[i][0] , &six[i][1]);
if (six[i][0] == 1 || six[i][0] == 2) {
if (six[i][1] > max_width) {
max_width = six[i][1];
}
}
else if (six[i][0] == 3 || six[i][0] == 4) {
if (six[i][1] > max_height) {
max_height = six[i][1];
}
}
}
for (int i = 0; i < 5; i++) {
farm += (six[i][1] * six[i + 1][1]);
}
farm += (six[0][1] * six[5][1]);
farm -= max_width * max_height * 2;
printf("%d" , farm * K);
}
그런데 마지막 즈음에
farm -= max_width * max_height * 2;
이 부분은 아무리 봐도 이해가 안되더군요. 사각형을 잘라서 farm 에 합치는 과정은 이해 되는데, 왜 저 부분을 빼는지...
구체적인 설명을 해주셨으면 좋겠습니다.