[프로그래머스] 프렌즈 4블록 (파이썬)
728x90
반응형
이미 터트린거 어떻게 지우나 했는데 이런 방법이 있어서 참고했다 똑똑한 사람이 많군
b=list(map(list,zip(*board)) 이렇게 하면 세로 줄에 해당하는 아이템을 행으로 해서 새로운 배열로 리턴해준다
지워진 만큼 앞에 '_'을 붙여서 남은 것 끼리 오른쪽으로 모아준다
def pop_num(b, m, n):
pop_set = set()
# n,m 방향 주의
for i in range(1, n):
for j in range(1, m):
if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != '_':
pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)])
# set_board
for i, j in pop_set:
b[i][j] = 0
for i, row in enumerate(b):
empty = ['_'] * row.count(0) # 지워진 개수만큼 앞에 '_' 붙여주면 0아닌 것 끼리 모인다
b[i] = empty + [block for block in row if block != 0] # 0아닌 것 끼리 모아주기
return len(pop_set)
def solution(m, n, board):
count = 0
b = list(map(list, zip(*board))) # 행열 바꿔치기
while True:
pop = pop_num(b, m, n)
if pop == 0: return count # 바뀐 것이 없으면 끝
count += pop
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 (파이썬, dp) (0) | 2020.09.21 |
---|---|
[프로그래머스] 행렬의 곱셈 (파이썬) (0) | 2020.09.21 |
[프로그래머스] level3. 베스트앨범 (파이썬, javascript) (0) | 2020.09.21 |
[프로그래머스] 1차 캐시 (파이썬, javascript) (0) | 2020.09.21 |
[프로그래머스] 땅따먹기 (파이썬, javascript ) (0) | 2020.09.18 |
TAGS.