알고리즘 문제풀이

참외밭[백준 2477]

wiojfe 2024. 5. 19. 20:10

 

https://www.acmicpc.net/problem/2477

 

전체 사각형에서 빼줘야 하는 작은 사각형의 변 길이를 잘 찾으면 된다. 

#include <stdio.h>

int main() {
    int K;
    scanf("%d", &K);

    int x[6] = {0}; // x 방향 길이를 저장할 배열
    int y[6] = {0}; // y 방향 길이를 저장할 배열
    int xy[6] = {0}; // 전체 길이를 저장할 배열
    int xCount = 0, yCount = 0; // x, y 배열의 인덱스를 위한 카운터

    int direc, length;
    for(int i = 0; i < 6; i++) {
        scanf("%d %d", &direc, &length);
        if (direc < 3) {
            x[xCount++] = length;
        } else {
            y[yCount++] = length;
        }
        xy[i] = length;
    }

    int x_max = x[0];
    int y_max = y[0];
    for (int i = 1; i < 3; i++) {
        if (x_max < x[i]) x_max = x[i];
        if (y_max < y[i]) y_max = y[i];
    }

    int x_min, y_min;
    for (int i = 0; i < 6; i++) {
        if (xy[i] == y_max) {
            x_min = xy[(i + 3) % 6];
        }
        if (xy[i] == x_max) {
            y_min = xy[(i + 3) % 6];
        }
    }

    printf("%d\n", K * (x_max * y_max - x_min * y_min));

    return 0;
}