개복치96 2023. 2. 7. 19:19
반응형

이 문제는 간단한 아이디어만 떠올리면 해결이 가능한 문제이다.

수학문제처럼 좌표평면에서 면적을 계산하려하지말고
좌표평면 전체를 도화지라고 생각하고 칸으로 나눠놓고 하나씩 채워나간다고 생각하면 된다.

나는 방문탐색이라고 생각했다.
처음 문제가 주어질때 사각형의 왼쪽 아래의 좌표와 사각형의 폭과 높이를 알려주었으니,
모눈종이에서 해당하는 만큼을 칠한다고 생각했고,
그 모눈종이의 각 칸을 이차원 배열로 생각했다.

즉 이런 표가 있다고 생각하고
0 0 10 10이라는 값을 입력받았으면
(0,0)에서 폭이 10이고 높이가 10인 사각형이다.
이때 (0,0)을 왼쪽 끝의 점이아니라 칸이라고 생각하면 조건에 맞는 칸을 색칠하면 된다.

따라서 예제와 같이 입력된 경우를 살펴보면

먼저 도화지에 가로 1000칸 세로 100칸짜리 표를 그려 주었다.(2차원 배열 생성)
그리고 이 배열은 자동으로 초기화되어 0이 들어가있다.

N은 2가 입력되었으므로

N은 1일때
0 0 10 10에 해당되는 배열(칸)에 1을 넣어주고
N은 2일때
2 2 6 6에 해당되는 배열(칸)에 2를 넣어준다.

이런 방식으로 하면 나중에 들어온 값이 덮어씌워지므로 자연스럽게 색종이가 덮어지는 것을 구현할 수 있다.이런 값이 들어오면 N은 2이다.
여기서 N은 1일때 먼저 입력된 0 0 10 10을 1로 채워주고
N은 2일때 2 2 6 6 만큼 2로 덮어씌운다.

그렇게 색종이를 전부 덮어씌우고 나서
다시 완전탐색을 하면서 1이 적힌 칸의 수, 2가 적힌 칸의 수...

이렇게 구하면 된다!

반응형