같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다.
블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다.
만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의 블록이 모이면 다시 지워지고 떨어지고를 반복하게 된다.
코딩테스트 연습 - [1차] 프렌즈4블록 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음에는 [0][0] 부터 시작하여 m-1, n-1 까지 반복문을 돌며, 해당 좌표에서 아래, 대각선아래, 오른쪽으로 사각형을 확인했다. 만약 해당 좌표가 모든 사각형에서 사라질 수 있는 조건에 해당한다면, 해당 좌표를 방문했는지 확인(visited) 후 최종 방문 블럭 수에 추가해주었다.
def rotation(x,y,chars,board,visited):
dx=[0,1,1,0]
dy=[1,1,0,0]
result=0
cnt=0
for i in range(3):
if board[x+dx[i]][y+dy[i]] == chars:
cnt+=1
if cnt==3:
for i in range(4):
if visited[x+dx[i]][y+dy[i]]==0:
visited[x+dx[i]][y+dy[i]]=1
result+=1
return result
def solution(m, n, board):
visited=[]
for i in range(m):
visited.append([0]*n)
answer=0
check=0
for i in range(m-1):
for j in range(n-1):
check=rotation(i,j,board[i][j],board,visited)
answer+=check
return answer
하지만 다시 지워진 곳에 떨어지는 조건을 충족하지 못하여 모든 점수를 얻을 수 없었다.

참고한 최종코드는 다음과 같다. 전체 코드를 while True:로 감싼 뒤 표시된 블록을 지우고 다시 rotation 함수를 돌리는 과정이 필요했다.
def rotation(x,y,board,m,n) :
dx=[0,1,1]
dy=[1,0,1]
count=0
result=False
for i in range(3) :
nx=x+dx[i]
ny=y+dy[i]
if nx>=m or ny>=n :
continue
if board[x][y]==board[nx][ny] :
count+=1
if count==3 :
result=True
return result
def solution(m, n, board):
answer = 0
for i in range(m) :
board[i]=list(board[i])
while True :
visited=[[0]*n for _ in range(m)]
count=0
#지워질 블록 표시하기
for i in range(m) :
for j in range(n) :
if board[i][j]!='9' and rotation(i,j,board,m,n) :
visited[i][j]=visited[i][j+1]=visited[i+1][j]=visited[i+1][j+1]=1
count+=1
#더이상 지워질 블록이 없으면 종료
if count==0 :
break
#표시된 블록 지우기
for i in range(m) :
for j in range(n) :
if visited[i][j]==1 :
board[i][j]='9'
answer+=1
#블록 정리하기
for y in range(n) :
for i in range(m) :
for x in range(m-1) :
if board[x+1][y]=='9' :
board[x+1][y]=board[x][y]
board[x][y]='9'
return answer| [코테] 프로그래머스 파이썬 Lv2. k진수에서 소수 개수 구하기 - 소수와 진수 (0) | 2024.01.06 |
|---|---|
| [코테] 프로그래머스 파이썬 Lv2. [3차] 파일명 정렬 - 람다 표현식 관련 (0) | 2024.01.06 |
| [코테] 프로그래머스 파이썬 Lv2. 오픈채팅방 (0) | 2024.01.05 |
| [코테] 프로그래머스 파이썬 Lv2. 스킬트리 (0) | 2024.01.04 |
| [코테] 프로그래머스 파이썬 Lv2. 땅따먹기 (0) | 2024.01.03 |