백준
백준 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문을 사용하여도 가능하다.