프로그래머스. 프렌즈 4블록
2024. 3. 28. 18:40ㆍ코딩 테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/17679
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
전체 코드
한승협님 코드
def solution(m, n, board):
cnt = 0
board = [list(i) for i in board]
while True:
rem = set()
# 제거할 타일을 rem 에 담는 과정
for x in range(m-1):
for y in range(n-1):
if board[x][y] == board[x+1][y] == board[x][y+1] == board[x+1][y+1]:
if board[x][y] != "X":
rem.add((x,y))
rem.add((x+1,y))
rem.add((x,y+1))
rem.add((x+1,y+1))
# X 로 바꿈
cnt += len(rem)
for x, y in rem:
board[x][y] = "X"
# 아래 X 칸이 아닌 X 칸을 아래 칸과 맞바꿈
while True:
moved = 0
for x in range(m-1):
for y in range(n):
if board[x+1][y] == "X" and board[x][y] != "X":
board[x+1][y], board[x][y] = board[x][y], board[x+1][y]
moved += 1
# X 칸을 다 내려줬다면 움직임이 없음
if moved == 0:
break
# 제거할 칸이 없다면 나감
if not rem:
break
return cnt
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스. 등굣길 (0) | 2024.03.27 |
---|---|
프로그래머스. 단어변환 (0) | 2024.03.27 |
프로그래머스. 뒤에 있는 큰 수 찾기 (0) | 2024.03.25 |
프로그래머스. 야근지수 (0) | 2024.03.22 |
프로그래머스. 네트워크 (0) | 2024.03.21 |