본문 바로가기

Python(알고리즘,문제풀이)/BOJ (Bronze V)

2563번 / 색종이

728x90

📚문제

출처 : 백준 / 2563번 (https://www.acmicpc.net/problem/2563)

 

📝풀이

# 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