CodingTest/Programmers
[ 프로그래머스 / 파이썬 ] 프렌즈 4블록
EEOOOO
2022. 6. 30. 01:55
/ 구현 1 /
def solution(m, n, board):
answer = 0
# 각 값 쉽게 접근 위해 배열화
for i in range(m):
board[i] = list(board[i].strip())
# popBlock 시작위해 무작위값 대입
popBlocks = ['a']
while popBlocks:
# 전체 값 돌며 있나 체크 좌상이 기준
popBlocks = []
visited = [[False]*n * for _ in range(m)]
for i in range(m-1):
for j in range(n-1):
ij = check(i, j, board)
if ij:
popBlocks.extend(check(i, j, board, visited))# 지워질 아이템 인덱스 배열
# 아래 아이템 먼저 빠지라고 정렬
popBlocks.sort(key = lambda k: k[0], reverse = True)
if popBlocks:
# 지우기
for block in popBlocks:
x, y = block
print(x, y)
while x > 0:
board[x][y] = board[x-1][y]
x -= 1
board[x][y] = '0' # x == 0
return answer
def check(i, j, board, visited): # bfs같이 퍼뜨리며 체크하고 싶은데 가능하겠냐..? 구현해봐
result = []
visited[i][j] = True
if not visited[i][j]:
result.append([i, j+1])
if i+1 <= len(board) and j+1 <= len(board[0]):
if board[i][j] == board[i][j+1] and not visited[i][j+1]:
result.append([i,j+1])
visited[i][j+1] = True
if board[i][j] == board[i+1][j] and not visited[i+1][j]:
result.append([i+1,j])
visited[i+1][j] = True
if board[i][j] == board[i+1][j+1] and not visited[i+1][j+2]:
result.append([i+1][j+1])
visited[i+1][j+1]
else:
return result
# 지금 안되는거. 1) bfs퍼트리는거
진짜 별별.. 방법으로 이리 고민 저리 고민 2시간을 낑낑댔는데 안 될 것 같아 물러납니다.
check 구현이 안 됩니다.
검색해서 공부하기로 합니다.
https://my-coding-notes.tistory.com/226
[프로그래머스 / 파이썬] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT)
코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카
my-coding-notes.tistory.com