[Python] 색종이 - 2차원 배열

Saemi Min·2023년 2월 7일
0

BaekJoon

목록 보기
6/30
post-thumbnail

해당 문제 링크

풀이

ip=int(input())
l = [[0 for j in range(100)] for i in range(100)] #0으로 초기화

for i in range(ip):
    x, y=map(int, input().split())
    for i in range(100):
        for j in range(100):
            if(i>=x and i<x+10) and (j>=y and j<y+10):
                l[i][j]+=1
k=0

for i in range(100):
    for j in range(100):
        if(l[i][j]>1):
            k+=l[i][j]-1

m=ip*100

print(m-k)

Git - 코드

해석 및 기억할 점

100*100 도화지를 초기화 한 뒤,
색종이 한 장을 도화지 위에 올려놓으면 1을 더해주도록 했다. 이후 겹치는 부분은 2인 값 이상을 갖고 있을 것이다. 겹치는 값들을 모든 색종이의 넓이에서 빼주면 된다.
처음에는 색종이 수를 받는 것을 잊고 3장을 기준으로 코드를 적었다.. 문제를 제대로 읽고 풀어야겠다!!!
유심히 봐야 할 코드는 아래와 같다.

for i in range(100):
    for j in range(100):
        if(l[i][j]>1):
            k+=l[i][j]-1

여기서 -1을 빼준 이유는 색종이가 존재하는 좌표의 값은 남겨두기 위해서 이다. 예를 들면 2장이 겹쳤는데 2장 빼주면 안되는 것과 의미가 같다.

2차원 배열을 초기화 해주는 코드도 잊지 말고 기억하자!

l = [[0 for j in range(100)] for i in range(100)]
profile
I believe in myself.

0개의 댓글