[Python]2022-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
겹치는 예시
해결방법
- 겹치는 경우의 수가 매우 많기 때문에 겹칠 때와 겹치지 않을 때로 나누는 것은 무의미하다.
- 생성되는 도형을 하나의 도형이라고 생각한다.
- 면적은 배열 전체를 0으로 초기화 한 후 사각형 안에 있는 좌표만 1로 갱신해준 후 그 값을 다 더한다.
- 테두리는 현재 좌표가 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)
댓글남기기