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
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 4839. 이진탐색 - Python (0) | 2022.02.20 |
---|---|
[SWEA] 4837. 부분 집합의 합 - Python (0) | 2022.02.20 |
[SWEA] 1209. Sum - Python (0) | 2022.02.19 |
[SWEA] 1208. Flatten - Python (0) | 2022.02.19 |
[SWEA] 1945. 간단한 소인수분해 - Python (0) | 2022.02.18 |
댓글