4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기

D2

 

Problem

SW Expert Academy 색칠하기

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


Solution

1. 빨간색과 파란색의 범위를 따로 색칠한 후, 만약 한 곳에 색칠해진다면 보라색이 되므로 카운팅한다.

 


Code

for test_case in range(1, int(input()) + 1):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]
    page_red = [[0 for _ in range(10)] for _ in range(10)]
    page_blue = [[0 for _ in range(10)] for _ in range(10)]

    purple = 0

    for i in range(N):
        for k in range(arr[i][2] - arr[i][0] + 1):
            for l in range(arr[i][3] - arr[i][1] + 1):
                if arr[i][-1] == 1:
                    # 빨간 색 칠하기
                    page_red[arr[i][0] + k][arr[i][1] + l] = 1
                else:
                    # 파란색 칠하기
                    page_blue[arr[i][0] + k][arr[i][1] + l] = 1
    for i in range(10):
        for j in range(10):
            # 빨간색 + 파란색 >=2 이면 퍼플
            if page_red[i][j] + page_blue[i][j] >= 2:
                purple += 1
    print(f'#{test_case} {purple}')


<부족한 부분은 댓글로 남겨주시면 저에게 도움이 됩니다!>

<그림 출처: SWEA 색칠하기>

 

반응형