Algorithm/SW Expert Academy

[Python] 4836. 색칠하기

느낌표 공장장 2021. 9. 6. 23:07
# 색칠하기 함수
def painting(purple):
    # 색칠할 박스 받아오기 [행 시작, 열 시작, 행 끝, 열 끝, 색깔]
    box = list(map(int, input().split()))

    # 색 (1: 빨강, 2: 파랑)
    color = box[4]

    # 왼쪽 위 모서리 에서 오른쪽 아래 모서리까지 색칠
    for x in range(box[0], box[2] + 1):
        for y in range(box[1], box[3] + 1):

            # 같은 색은 겹치지 않는다는 조건.
            board[x][y] += color
            if board[x][y] == 3:
                  purple += 1

    return purple


tc = int(input())

for idx in range(1, tc+1):
    n = int(input())                        # 색칠할 박스의 개수
    board = [[0] * 10 for _ in range(10)]   # 색칠할 보드

    purple = 0
    # 주어진 박스 개수만큼 반복
    for i in range(n):
        # 색칠하기 함수를 불러와, 보라색 개수 업뎃
        purple = painting(purple)


    print('#{} {}'.format(idx, purple))

 

* 같은 색은 겹치지 않는다는 조건이 없을 경우

# 색칠하기 함수
def painting(purple):
    # 색칠할 박스 받아오기 [행 시작, 열 시작, 행 끝, 열 끝, 색깔]
    box = list(map(int, input().split()))

    # 색 (1: 빨강, 2: 파랑)
    color = box[4]

    # 왼쪽 위 모서리 에서 오른쪽 아래 모서리까지 색칠
    for x in range(box[0], box[2] + 1):
        for y in range(box[1], box[3] + 1):
            # 같은 색은 겹치지 못하게 예외처리한 코드 (같은 색은 겹치지 않는다는 조건 없을경우)
            # 해당 블럭에 아무것도 색칠 안되어 있다면 색칠하기
            if board[x][y] == 0:
                board[x][y] = color
            # 해당 블럭에 다른 색이 색칠되어 있다면 보라색이 된다(3)
            # (같은 색이 아니고, 보라색이 아님)
            elif board[x][y] not in (color, 3):
                board[x][y] = 3
                purple += 1

    return purple


tc = int(input())

for idx in range(1, tc+1):
    n = int(input())                        # 색칠할 박스의 개수
    board = [[0] * 10 for _ in range(10)]   # 색칠할 보드

    purple = 0
    # 주어진 박스 개수만큼 반복
    for i in range(n):
        # 색칠하기 함수를 불러와, 보라색 개수 업뎃
        purple = painting(purple)


    print('#{} {}'.format(idx, purple))

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 4839. 이진탐색  (0) 2021.09.06
[Python] 4837. 부분집합의 합  (0) 2021.09.06
[Python] 1210. ladder1  (0) 2021.09.06
[Python] 1954. 달팽이 숫자  (0) 2021.08.11
[Python] 1209. sum  (0) 2021.08.11