4836. 색칠하기
문제)
그림과 같이 인덱스가 있는 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 (파랑) 으로 칠한다 )
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 칠할 영역의 개수 N이 주어진다. ( 2 ≤ N ≤ 30 )
다음 줄에 왼쪽 위 모서리 인덱스 r1, c1, 오른쪽 아래 모서리 r2, c2와 색상 정보 color가 주어진다. ( 0 ≤ r1, c1, r2, c2 ≤ 9 )
color = 1 (빨강), color = 2 (파랑)
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
T = int(input())
for _ in range(T):
li = [[0]*10 for i in range(10)]
n = int(input())
for i in range(n): # n번만큼 입력을 받음
r1, c1, r2, c2, color = map(int, input().split())
for o in range(r1, r2 + 1):
for k in range(c1, c2 + 1):
# 해당 구간에 이미 색이 칠해져 있고 내 색과 다르면
if li[o][k] != color and li[o][k] != 0:
li[o][k] = 3
else:
li[o][k] = color
cnt = 0
for a in li: # 3인 구간 찾기 (보라색)
for b in a:
if b == 3:
cnt += 1
print(f"#{_ + 1} {cnt}")
|
cs |
문제 출처 : https://swexpertacademy.com/main/main.do
※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.
학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 4839. 이진탐색 (0) | 2022.02.16 |
---|---|
[SW Expert Academy] 4837. 부분집합의 합 (0) | 2022.02.16 |
[SW Expert Academy] 1954. 달팽이 숫자 (0) | 2022.02.14 |
[SW Expert Academy] 6485. 삼성시의 버스 노선 (0) | 2022.02.10 |
[SW Expert Academy] 5789. 현주의 상자 바꾸기 (0) | 2022.02.10 |