Q1) 문제를 어떻게 이해했나요?
A1) 주어진 m x n 크기의 보드에서, 같은 캐릭터 4개가 2x2로 붙어 있으면 지워지고 그 위의 블록들이 아래로 떨어진다. 이 과정을 더 이상 지워질 블록이 없을 때까지 반복, 최종적으로 지워진 블록의 총 개수를 반환
Q2) 문제를 어떻게 풀 예정인가요?
A2)
1. 보드를 2차원 배열로 변환
2. 2x2 블록 탐색하여 지워질 위치 기록
3. 지울 위치가 없으면 반복 종료
4. 지울 위치를 "0" 으로 표시하고 지움 처리
5. 아래에서부터 블록을 채워 넣음(중력 구현)
6. 반복하며 지워진 총 블록 개수 누적
✅ 최적의 코드
def solution(m, n, board):
# 1. 문자열 배열을 리스트의 리스트로 변환
board = [list(row) for row in board]
total_removed = 0
while True:
# 2. 지워질 위치 찾기
to_remove = set()
for i in range(m - 1):
for j in range(n - 1):
block = board[i][j]
if block == "0":
continue
if block == board[i+1][j] == board[i][j+1] == board[i+1][j+1]:
to_remove |= {(i, j), (i+1, j), (i, j+1), (i+1, j+1)}
# 3. 더 이상 지울 게 없으면 종료
if not to_remove:
break
# 4. 블록 지우기
for i, j in to_remove:
board[i][j] = "0"
total_removed += len(to_remove)
# 5. 블록 떨어뜨리기
for j in range(n): # 열 단위
empty = []
for i in range(m-1, -1, -1): # 아래에서 위로
if board[i][j] == "0":
empty.append(i)
elif empty:
empty_i = empty.pop(0)
board[empty_i][j], board[i][j] = board[i][j], "0"
empty.append(i)
return total_removed
[추천 강의✨]
38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의
현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,
www.inflearn.com
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인
현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.
www.inflearn.com
728x90
반응형
'Algorithm' 카테고리의 다른 글
| [카카오 코테 2020 | python] 문자열 압축 ✅ (0) | 2025.06.27 |
|---|---|
| [카카오 코테 2022 | python] 두 큐 합 같게 만들기 (0) | 2025.06.25 |
| [카카오 코테 2022 | python] 주차 요금 계산 (0) | 2025.06.24 |
| [카카오 코테 2018 | python] 파일명 정렬 (0) | 2025.06.23 |
| [카카오 코테 2019 | python] 크레인 인형뽑기 게임 ✅ (1) | 2025.06.23 |