알고리즘 문제풀이

백준 2669.직사각형 네개의 합집합의 면적 구하기 실버5

아크몽 2024. 2. 18. 00:21

14분 소요

arr = [list(map(int,input().split())) for _ in range(4)]
board = [[0] * 100 for _ in range(100)]
color = 0 # 색칠하기
for i in arr:
    c1,r1,c2,r2 = i
    # print(c1,r1,c2,r2)
    color += 1 # 색을 뒤에 추가하면 color가 꼬인다.
    for x in range(c1,c2): # 4-2 = 2
        for y in range(r1,r2):
            board[x][y] = color
cnt = 0 # 숫자세기
for p in range(100):
    for q in range(100):
        for z in range(1,color+1):
            if board[p][q] == z:
                cnt += 1
print(cnt)

실수한 점

  1. for x in range(c1,c2+1) 로 뒀었음 => 높이를 구하기 때문에 4-2 = 2cm 기 때문에 range(2,4) 로 두면 2칸을 채우기 때문에 `range(c1,c2) 가 맞음
  2. color += 1 의 위치를 색칠하기 전에 둠으로서 색칠하고 나서는 색을 증가시키지 않을 수 있다.