본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 4836. 색칠하기- Python

by chaemj97 2022. 2. 19.
728x90

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

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

swexpertacademy.com

 

< 📝 문제 >

그림과 같이 인덱스가 있는 10x10 격자에 빨간색과 파란색을 칠하려고 한다.

N개의 영역에 대해 왼쪽 위와 오른쪽 아래 모서리 인덱스, 칠할 색상이 주어질 때, 칠이 끝난 후 색이 겹쳐 보라색이 된

 

칸 수를 구하는 프로그램을 만드시오.

주어진 정보에서 같은 색인 영역은 겹치지 않는다.

예를 들어 2개의 색칠 영역을 갖는 위 그림에 대한 색칠 정보이다.

 

2

2 2 4 4 1  ( [2,2] 부터 [4,4] 까지 color 1 (빨강) 으로 칠한다 )

3 3 6 6 2 ( [3,3] 부터 [6,6] 까지 color 2 (파랑) 으로 칠한다 )


< ❓ 생각 >

행렬로 만들어서 색칠 영역에 숫자를 대입해서 그 숫자 값이 3인 영역의 수를 세자

!! 주어진 정보에서 같은 색인 영역은 겹치지 않는다!!


< 💻 코드 >

# T : 테스트 케이스 개수
T = int(input())
for tc in range(1, T + 1):
    # 칠할 영역의 개수
    N = int(input())

    # 10*10 격자
    arr = [[0] * 10 for _ in range(10)]
    # 보라색 영역 개수
    result = 0

    for i in range(N):
        # 왼쪽 위 모서리 인덱스 r1, c1, 오른쪽 아래 모서리 r2, c2와 색상 정보 color
        r1, c1, r2, c2, color = map(int, input().split())
        # 격자에 빨간색이면 1 추가, 파란색이면 2 추가 -> 값이 3인 격자 = 보라색
        # 주어진 정보에서 같은 색인 영역은 겹치지 않는다.
        for i in range(r1, r2 + 1):
            for j in range(c1, c2 + 1):
                arr[i][j] += color
                if arr[i][j] == 3:
                    result += 1
    print(f'#{tc} {result}')


< ❗ 느낀 점 >

문제를 꼼꼼히 읽지 않아서 꼬였던 문제

728x90
반응형

댓글