[SWEA] 4836. [Python S/Wトラブルシューティング基本]2日目-シェーディング[D 2]


📚 質問する
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
色を重ねる.そこで、エリア内を探索すると、色をつけずに色をつけ、色をつけたら紫色にし、さらに1を加える.
📒 コード#コード#
T = int(input())
for tc in range(1, T+1):
    N = int(input())    # 칠할 영역의 개수
    arr = [[0]*10 for _ in range(10)]   # 10X10 배경
    purple = 0
    for _ in range(N):
        r1, c1, r2, c2, color = map(int, input().split()) # r1,c1, r2,c2 인덱스와 color
        for i in range(r1, r2+1):
            for j in range(c1, c2+1):
                if arr[i][j] == 0:   # 판에 안 칠해져있으면 0이니 color로 칠한다.
                    arr[i][j] = color
                else:   # 칠해져 있는 판에 덧칠하면 보라색으로 바뀐다.
                    purple += 1
    print(f'#{tc} {purple}')
同じ色を塗ってもいいと思い、コードを解いてみました.
では、板に色が塗られていなければcolor(1,2)に塗り、他の色だけが色が塗られている場合は紫色(3と書く)に変えます.
そして多色を塗った後、紫色の3の色を2次元配列から数えて出力します.
📒 コード#コード#
T = int(input())
for tc in range(1, T+1):
    N = int(input())    # 칠할 영역의 개수
    arr = [[0]*10 for _ in range(10)]   # 10X10 배경
    for _ in range(N):
        r1, c1, r2, c2, color = map(int, input().split()) # r1,c1, r2,c2 인덱스와 color
        for i in range(r1, r2+1):
            for j in range(c1, c2+1):
                if arr[i][j] == 0:   # 판에 안 칠해져있으면 0이니 color로 칠한다.
                    arr[i][j] = color
                elif arr[i][j] != color:    # 서로 다른 색이면 3으로 바꾼다, 3이어도 3으로 바꾸니 상관없다.
                    arr[i][j] = 3   # 보라색은 3으로 바꾼다.
    purple = 0
    for i in range(10):
        for j in range(10):
            if arr[i][j] == 3:
                purple += 1
    print(f'#{tc} {purple}')
🔍 結果:PASS