백준

백준 2564 문제풀이 [python]

ys.k 2023. 7. 12. 00:39

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

어려웠다.

 

2차원 배열에 왜 있는지도 처음엔 이해하지 못했다.

 

처음 문제를 접근한 방식은 4점의 좌표를 구하여, 차를 통해 겹치는 부분을 찾아 사각형 개수 * 100 - 겹치는 부분으로 하려 했다.

 

나중에 더 좋은 풀이가 생각났다.

 

그냥 2차원 배열로 0을 채운 공간을 만들어 두고, 사각형에 해당하는 부위만 1로 수정 후, 합해주면 된다.

 

코딩이기에 가능한 풀이이다.

 

 코드

a = int(input())
b=0
paper = [[0 for _ in range(0,100)] for i in range(0,100)]
for i in range(a):
    x,y = map(int,input().split())
    x = x-1
    y = y-1
    for j in range(y,y+10):
        paper[j][x:x+10] = (1 for i in range(10))
   
for i in paper:
    b += sum(i)
   
print(b)

창의력이 중요하다는 말을 다시 한번 떠오르게 한 문제이다.

 

또한 문제를 풀다가 막혔을 때, 살짝 충격받은 부분이 있다.

ㅋㅋㅋㅋ

 

초등학생 문제라니.

 

배운 점

2차원 배열에서 값을 연속적으로 할당해 주고 싶을 때, 등호 이후 for문을 사용하여도 가능하다.