입출력 예 설명
-입출력 예제 1의 경우, 첫 번째에는 A 블록 6개가 지워지고, 두 번째에는 B 블록 4개와 C 블록 4개가 지워져, 모두 14개의 블록이 지워진다.
-입출력 예제 2는 본문 설명에 있는 그림을 옮긴 것이다. 11개와 4개의 블록이 차례로 지워지며, 모두 15개의 블록이 지워진다.
접근법
아래의 총 세 가지 단계로 분류해서 풀었습니다.
(1) 현재 상태에서 제거 가능한지 판단 ▶ find_block함수
(2) 제거 가능 상태인 블록 제거( '0'으로 대체) ▶ delete_block함수
(3) 제거 한 블록 자리에 다른 블록 채우기 ▶ fill_blank함수
(1) find_block
현재 상태의 블록에 하나씩 접근하며 현재 블록의 주위 3개의 블록이 현재 블록과 같은 블록인지 확인하고, 같은 블록일 경우 모든 위치를 delete_list에 넣어줍니다. 모든 블록을 확인하였으면 delete_list를 반환해 줍니다.
(2) delete_block
delete_list를 확인하여 입력된 위치 값들을 모두 '0'으로 바꿔줍니다.
(3) fill_blank
이 함수는 아래의 그림과 같이 작동합니다.