알고리즘/programmers
[Programmers] 블록 게임
꾸준함.
2025. 1. 26. 00:52
문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/42894
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
`3 * 2, 2 * 3 형태로 구성된 블록을 찾을 수 있으면 지운다`를 반복하는 알고리즘 문제였습니다.
알고리즘은 다음과 같습니다.
1. 각 열마다 `가장 위쪽 블록의 행 번호`를 추적하여 topRowInCol 배열에 업데이트합니다.
1.1 topRowInCol 배열은 실제 검사해야 할 행 범위를 빠르게 결정할 수 있도록 지원합니다.
2. 3 * 2 나 2 * 3 영역에서 다음 조건이 해당하면 블록을 제거해 줍니다.
- 빈칸이 정확히 두 개 (주어진 블록들이 직사각형이 되려면 빈칸을 두 개 검은색 블록으로 채워줘야 함)
- 나머지 칸이 전부 동일 블록
3. 블록을 제거할 때마다 topRowInCol 배열을 업데이트해 줍니다.
4. 위 과정을 한 횟차에서 아무 블록도 제거되지 않을 때까지 반복해 줍니다.
개발환경: Programmers IDE
지적, 조언, 질문 환영합니다! 질문 남겨주세요~
반응형