For Programmer

백준 10163번 파이썬 문제풀이(색종이) 본문

코팅테스트/백준 문제 모음

백준 10163번 파이썬 문제풀이(색종이)

유지광이 2022. 2. 1. 00:53
728x90


 

이 문제는 푸는 방식을 모른다면 정말 어려운 문제다. 문제에서 1001,1001 이라고 개수를 정해주었기 때문에 제일 먼저 생각해야할 것이 미리 1001*1001 배열을 정해서 배열안의 값을 각각 색종이마다 다르게 저장하는 방식으로 생각을 해야한다. 

N = int(input())
info = []
array = [[-1] * 1001 for _ in range(1001)]

max_index_height, max_index_width = 0, 0  # 최대 인덱스를 저장할 변수 선언
for k in range(N):
    x1, y1, w, h = list(map(int, input().split()))  # 각각 x,y,넓이,높이 정보를 받는다.

    if max_index_height < y1 + h:  # 최대 행의 인덱스가 있다면.
        max_index_height = y1 + h  # 그 행을 최대행인덱스로 설정해준다.

    for a in range(y1, y1 + h):  # 높이 길이만큼돈다.
        array[a][x1:(x1 + w)] = [k] * w  # x1 ~ x1+w 까지의 배열을 모두 [k] * w 로 바꿔준다.

for k in range(N):  # N개수 만큼 돈다.
    count = 0  # 넓이를 저장할 변수 선언
    for i in range(max_index_height):  # 배열 길이만큼돈다.
        count += array[i].count(k)

    print(count)  # 해당 개수를 출력
728x90
Comments