TIL과 WIL
TIL. 문제풀이(2)
barryjung
2023. 6. 2. 21:07
[오늘 한일]
- 알고리즘 문제풀이
- 도커강의 수강
[오늘 배운점]
파이썬
<프렌즈 4블록 풀이>
오늘은 프로그래머스 문제중 프렌즈 4블록을 풀었는데,
내가 푼 풀이가 마음에 들어서 꼭 기록해두고 싶다.
새로 배웠다기 보다, 그동안 내가 알던걸 잘 활용해서 풀었다. (문제나 풀이에 대한 설명은 생략하겠다.)
def erasing(m, n, board):
checklist = [[bool(board[y][x]==board[y][x+1]==board[y+1][x]==board[y+1][x+1]!=0) for x in range(m-1)] for y in range(n-1)]
for y, row in enumerate(checklist):
for x, check in enumerate(row):
if check:
board[y][x] = None
board[y+1][x] = None
board[y][x+1] = None
board[y+1][x+1] = None
return board
def makedown(m, n, board):
for y in range(n):
for x in range(m):
if None in board[y]:
board[y].pop(board[y].index(None))
board[y].append(0)
return board
def solution(m, n, board):
board = [[board[y][x] for y in range(m)][::-1] for x in range(n)]
answercount = 0
while True:
checkboard = erasing(m, n, board)
addcount = sum([row.count(None) for row in checkboard])
if addcount==0:
break
answercount+=addcount
board = makedown(m, n, checkboard)
return answercount
이중구조 리스트 컴프리헨션,
bool함수,
count연산,
pop연산 등이 주요하다.
방법 면에서도
여러 아이디어가 들어가있다.
나중에 보고, 이런식으로 코드를 작성했었음을 되짚어보고싶다.