감자튀김 공장🍟

[백준/2563] 색종이 (with 파이썬) 본문

Algorithm/BOJ

[백준/2563] 색종이 (with 파이썬)

Potato potage 2022. 11. 6. 17:46
반응형

✔ 문제


풀이

n = int(input())
white = [[0 for _ in range(101)] for _ in range(101)]

for _ in range(n):
    x, y = map(int, input().split())

    for i in range(x, x+10):
        for j in range(y, y+10):
            white[i][j] = 1

ans = 0
for r in white:
    ans += r.count(1)
print(ans)

✔ 설명

1. 흰 도화지는 가로, 세로 100 사이즈로 고정되어 있으며 색종이가 해당 범위를 넘어가지 않기 때문에 0~100까지의 이차원 배열을 생성한다.

2. 색종이의 x, y 좌표를 입력받은 후 색종이의 크기는 가로, 세로 10이기 때문에 for문을 돌면서 색종이가 흰 도화지를 가리는 좌표들을 white 좌표에 1로 저장한다.

3. for문을 통해 white에 있는 1의 개수를 세서 ans에 계속해서 더하면 된다.

    ㄴ white[i][j] += 1이 아니라 whilte[i][j] = 1을 하기 때문에 중복되는 영역은 1번만 카운트 됨을 알 수 있다.


✔ 후기

색종이의 전체 면적을 구하고 겹치는 영역의 면적을 구해 전체 영역에서 뺄려고 했는데 색종이가 3장 이상 겹쳐지는 경우도 있기 때문에 다른 방법이 있을 것 같아서 고민하다가 white[i][j] = 1 이라는 키워드를 생각해내지 못해 다른 분들의 코드를 보고 다시 풀어봤다.

반응형
Comments