[規格]2669四角形の和セットの面積python


4つの長方形とセットの面積を求めます


質問する


平面には4つの長方形があり、その底辺は横軸に平行です.この4つの矩形は互いに分離してもよいし、重なり合ってもよいし、1つは別のものを含んでもよいし、変異してもよいし、頂点が重なり合ってもよい.
これらの矩形の面積を求めるプログラムを作成してください.

入力


四角形の位置を表す4行の整数を4つずつ入力します.1番目と2番目の整数は矩形左下頂点のx座標、y座標であり、3番目と4番目の整数は矩形右上頂点のx座標、y座標である.すべてのx座標およびy座標は、1以上100未満の整数である.

しゅつりょく


1行目は4つの長方形が占める面積を出力します.

ソリューション


  • 2 D配列を作成し、各長方形を巡回します.

  • 長方形を迂回して、訪問先を1に塗ります.

  • 長方形を回転させ、1塗りの箇所の和を正解として出力します.
  • import pprint
    board = [[0 for j in range(100)] for i in range(100)] # 100 x 100 그리드 만들기 
    for _ in range(4) : #4개의 직사각형을 돌며 
        a, b, c, d = map(int, input().split()) #각 좌표를 a,b,c,d에 저장 
        for i in range(a, c) : #i가 직사각형 면적 안에 있게 하기 위해 for문을 돌린다.
            for j in range(b, d) : #y좌표를 돌며 값을 입력시킨다.
                if board[i][j] == 1 : #만약 값이 입력되어 있으면 
                    continue          #continue
                else :
                    board[i][j] = 1 #아니면 값을 입력한다. (직사각형이 겹치지 않게 하기 위해서 )
    
    ans = 0
    for i in range(100): #좌표를 돌며 최종적으로 값이 입력되어있으면 더한다. 
        for j in range(100):
            if board[i][j] == 1 :
                ans += 1
    print(ans)