728x90
📚문제
📝풀이
# 2563번 색종이
array = [[0 for _ in range(100)] for _ in range(100)] # 도화지의 범위
n = int(input())
for _ in range(n): # 입력 받은 검정색 색종이 수
x1, y1 = map(int, input().split()) # 왼쪽아래 x,y 좌표
for i in range(x1, x1 + 10): # 검정색 색종이의 가로 길이
for j in range(y1, y1 + 10): # 검정색 색종이의 세로 길이
array[i][j] = '*' # 해당영역(범위)의 값을 0에서 '*'로 바꿔준다.
result = 0 # 넓이 출력할 변수
for i in array:
result += i.count('*')
print(result)
물론 2차원 배열 문제이긴 하지만 처음 보자마자 생각이 난건
square_list = []
for i in range(n):
square = list(map(int, input().split()))
square_list.append(square)
x_list = []
y_list = []
#
for j in square_list:
x_list.append(j[0])
y_list.append(j[1])
x1 = min(x_list)
x2 = max(x_list)+10
y1 = min(y_list)
y2 = max(y_list)+10
rec = (x2-x1)*(y2-y1)
이런 식으로 전체 넓이 중에서 흰색 영역을 빼려 그랬는데 이건 너무 어렵고 복잡하다....
그래서 다시 2차원 배열로 돌아와서 100 * 100의 배열을 만들어 준 다음에
검은색 영역에 해당하는 부분은 *를 해주고 아닌 부분은 0으로 한 다음에 *만큼 세는 걸 생각했는데
머릿속에서 구현이 어려워서 구글링하여 참고
728x90
'Python(알고리즘,문제풀이) > BOJ (Bronze V)' 카테고리의 다른 글
2372번 / Livestock Count (0) | 2023.07.11 |
---|---|
1809번 / Moo (0) | 2023.07.10 |
10798번 / 세로읽기 (0) | 2023.07.07 |
2566번 / 최댓값 (0) | 2023.07.06 |
2738번 / 행렬 덧셈 (0) | 2023.07.05 |