격자 안내판은 처음에 색 0이에요. paints의 각 행 [r1,c1,r2,c2,color]는 두 모서리를 포함하는 직사각형을 color로 칠하는 명령이에요. 명령을 기록 순서대로 적용하고, 겹친 곳은 나중 색으로 덮어써요. 색 0으로 칠하면 그 영역을 지워요. 마지막 안내판에 남은 1~5번 색의 종류 수를 구해요.
int solution(int rows, int cols, vector<vector<int>> paints)가 요구한 값을 반환하도록 함수를 작성해 주세요.
매개변수와 반환값
rows와 cols는 각각 110이에요. 명령 수는 050이고 각 행 길이는 5예요. 0≤r1≤r2<rows, 0≤c1≤c2<cols이며 color는 05예요. 반환값은 남은 색 종류 수로 05인 정수예요. 색 0은 종류 수에 넣지 않아요.
예시
rows=2, cols=3, paints={{0, 0, 1, 2, 1}, {0, 1, 1, 1, 2}}이면2를 반환해요. 전체를 색 1로 칠하고 가운데 열을 색 2로 바꿔 두 색이 남아요.rows=2, cols=2, paints={{0, 0, 1, 1, 3}, {0, 0, 1, 1, 0}}이면0를 반환해요. 전체를 색 3으로 칠한 뒤 모두 지워 색이 남지 않아요.
실행용 입출력
첫 줄에 rows cols 명령 수 n, 다음 n줄에 r1 c1 r2 c2 color를 입력해요. main은 입력을 매개변수로 바꾸고 반환값을 출력하는 채점 하네스예요. 풀이 대상은 solution 함수예요.
예시 입력
2 3 2 0 0 1 2 1 0 1 1 1 2
예상 결과
2
예시 입력
2 2 2 0 0 1 1 3 0 0 1 1 0
예상 결과
0
핵심 개념
array-2d: 행과 열의 위치를 구분해요.counting-aggregation: 항목별 횟수와 최종 집계를 구분해요.stl-vector: 벡터의 크기와 인덱스로 매개변수를 읽어요.