편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.01.31

    정보올림피아드 문제 입니다


    정보올림피아드 참외밭 문제 ( 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 에 합치는 과정은 이해 되는데, 왜 저 부분을 빼는지...

    구체적인 설명을 해주셨으면 좋겠습니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.01.28

    정보올림피아드 문제 입니다


    정보올림피아드 참외밭 문제 ( http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1520&sca=2060 ) 인데요

    모르겠어서 답안지를 봤는데, 의외로 짧은 코드가 나와서 놀랐습니다

    include

    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 에 합치는 과정은 이해 되는데 왜 저 부분을 빼는지...

    구체적인 설명을 해주셨으면 좋겠습니다 ㅠ_ㅠ