최대 1 분 소요

문제 바로가기 : https://programmers.co.kr/learn/courses/30/lessons/17679
문제 설명은 위 링크에서 확인해주시길 바랍니다.

solution


review

2*2 블럭이 모두 같은 그림이면 삭제할 수 있고 붙어있는 블럭도 유의해서 체크해야 한다.
블럭 하나를 선택한 후 아래, 오른쪽, 오른쪽아래와 같은지 체크한다. 따라서 범위가 NxN일 때 (N-1)X(N-1)까지 탐색한다.
삭제 가능한 블럭은 점으로 표시하고 solve()에서 탐색이 끝났다면 reset()에서 블럭이 아래로 쌓이게끔 정리해준다.
더 이상 삭제할 블럭이 없을 때는 solve()에서 false를 반환해 while문을 탈출하고 점의 개수를 세서 반환한다.

단순 구현 문제로 분류되는데 처음에 자꾸 시간 초과가 떠서 당황했었다!
겹치는 블럭들을 연이어서 bfs로 탐색해 체크에 업데이트 해주는 이상한 짓을 하다가 시간이 너무 오래걸렸다.
천천히 보니 굳이 그렇게 할 필요없고 모든 블럭을 조건에 맞춰 탐색해 나가면 문제 없더라..
삽질때문에 시간도 날리면서 머리 아팠던거 생각하니 좀 서럽다🤣 어쩄거나 마무리 완료!

카테고리:

업데이트:

댓글남기기