백준

백준2536번 (색종이2)

rabbit-jun 2025. 2. 24. 16:05

문제 정의

  1. n * 100 - 겹친 부분
  2. 겹친부분
    a. 주어진 각 좌표 ($ (x_{1} , y_{1}),(x_{2} , y_{2}),(x_{3} , y_{3}) $)에서 다른 좌표를 뺀다
    b. 뺀 값이 10보다 작으면 두 사각형은 겹치는 것
    c. (10 - ( $ x_{2} - x_{1} $ ) ) x (10 - ( $ y_{2} - y_{1} $ ) )을 하여 겹친 부분의 값을 얻는다
  3.  겹친 부분들을 모두 합하고 여러개의 사각형이 공통으로 겹쳐지는 부분을 뺀다

 

나의 풀이(두개의 사각형이 겹침)

import sys
n = int(sys.stdin.readline().strip('\n'))

A = [list(map(int,input().split())) for _ in range(n)]
B = 0
t_cnt = sum([x+1 for x in range(len(A))])-n
d_cnt =0
i = 1
print(A)
for _ in range(t_cnt):
    if i == n:
        d_cnt +=1
        i = 1 +d_cnt
    if i <n:
        tmp_x = abs(A[d_cnt][0] - A[i][0])
        tmp_y = abs(A[d_cnt][1] - A[i][1])
        i +=1

    print(f'{_} , tmp_x:{tmp_x}, tmp_y:{tmp_y}')
    if tmp_x <10 and tmp_y <10:
        B += (10-tmp_x) * (10-tmp_y)

print(n*100 - B)

 

처음부터 여러개의 사각형이 겹치는걸 생각하는게 어려워 두개의 사각형이 겹쳤을때를 생각하면서 했다.

1, 2번 까지는 했는데 3번은 어떻게 해야 할지 생각을 더 해봐야 될 것 같다

반응형