1 분 소요

두 개 사각형의 면적 테두리 구하기

문제

문제

입력 예시

3
2 6 6 8
4 1 8 5
11 1 15 5
13 3 17 7
20 2 26 6
22 3 24 5

출력 예시

24 28
28 24
24 20

겹치는 예시
겹치는 예시

해결방법

  1. 겹치는 경우의 수가 매우 많기 때문에 겹칠 때와 겹치지 않을 때로 나누는 것은 무의미하다.
  2. 생성되는 도형을 하나의 도형이라고 생각한다.
  3. 면적은 배열 전체를 0으로 초기화 한 후 사각형 안에 있는 좌표만 1로 갱신해준 후 그 값을 다 더한다.
  4. 테두리는 현재 좌표가 1일 때, 상하좌우 중 0인 것의 개수를 세주면 된다.
a = int(input())
for k in range(a):
    list_ = [[0 for col in range(100)] for row in range(100)]

    x1, y1, x2, y2 = map(int, input().split())
    x3, y3, x4, y4 = map(int, input().split())

    for i in range(x1, x2):
        for j in range(y1, y2):
            list_[i][j] = 1

    for i in range(x3, x4):
        for j in range(y3, y4):
            list_[i][j] = 1

    # 면적
    area = 0
    for i in range(0, 100):
        for j in range(0, 100):
            if list_[i][j]==1:
                area = area + 1

    # 테두리
    cnt = 0
    for i in range(0,100):
        for j in range(0,100):
            if list_[i][j] == 1:
                if list_[i-1][j] == 0 :
                  cnt +=1
                if list_[i+1][j] == 0:
                  cnt += 1
                if list_[i][j+1] == 0:
                  cnt +=1
                if list_[i][j-1] == 0:
                  cnt +=1
    print(area, cnt)

카테고리:

업데이트:

댓글남기기