PS

프로그래머스. 블록 게임

tose33 2022. 2. 19. 16:10

https://programmers.co.kr/learn/courses/30/lessons/42894

 

코딩테스트 연습 - 블록 게임

[[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0],[0,0,0,0,0,4,4,0,0,0],[0,0,0,0,3,0,4,0,0,0],[0,0,0,2,3,0,0,0,5,5],[1,2,2,2,3,3,0,0,0,5],[1,1,1,0,0,0,0,0,0,5]] 2

programmers.co.kr

 

1. 각 열 별로 가장 위에 위치한 블록의 행값을 기록한다.

 

2. 1에서 구한 가장 위에 위치한 블록 위부터 검정 블록을 꽉 채워 쌓는다.

 

3. 각 블록 종류 별로 꽉채워진 직사각형이 됐는지 판단한다.

 

---------------------------------------

특정 블록이 꽉채워진 직사각형이 됐는지 판단하는 방법은 다음과 같다

꽉채워진 직사각형은 총 두가지 종류가 있다 

 

2x3의 직사각형                                  3x2의 직사각형 

ㅁㅁㅁ                                                ㅁㅁ

ㅁㅁㅁ                                                ㅁㅁ

                                                          ㅁㅁ

 

또한 모든 블록의 원형은 1x1크기의 블록을 4개 갖는다.

따라서 2x3, 3x2 직사각형 범위에 해당 블록이 4개 and 검정 블록이 2개가 있다면 꽉 채워진 블록이 됐다고 판단 할 수 있다. 

---------------------------------------

 

4. 특정 블록이 꽉 채워진 직사각형이 됐다면 보드에서 지운다. 

 

5. 1~4를 더이상 지워지는 블록이 없어질때까지 반복한다.