문제 링크입니다: 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
지적, 조언, 질문 환영합니다! 질문 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 가사 검색 (0) | 2025.02.02 |
---|---|
[Programmers] RPG 게임 알고리즘 (0) | 2025.01.26 |
[Programmers] 1,2,3 떨어트리기 (0) | 2025.01.24 |
[Programmers] 행렬과 연산 (0) | 2024.11.05 |
[Programmers] 올바른 괄호의 갯수 (1) | 2024.11.02 |