728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17679#
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์๊ฐ์ ๋ ๊ฑธ๋ ค์ ํผ ๋นก๊ตฌํ๋ฌธ์ ,,
ํ์ ๊ฐ์๊ฐ m, ์ด์ ๊ฐ์๊ฐ n์ด๋ผ๋ ์ ๊ณผ, ๋ธ๋ก ๋ด๋ฆฌ๋ ๋ก์ง๋ง ์ฃผ์ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๋์ค์ ๋ค์ ํ์ด๋ฐ์ผ์ง
from collections import deque
def solution(m, n, board):
new_board = []
for i in range(m):
new_board.append(list(board[i]))
answer = 0
q = deque()
while True:
# ์ง์ธ ๋ธ๋ก ์ฐพ๊ธฐ (4๊ฐ ๋ธ๋ก ์ค ์ผ์ชฝ ์ ์ ํ๋ ์ขํ)
for i in range(m-1):
for j in range(n-1):
if new_board[i][j] == '':
continue
if new_board[i][j] != new_board[i][j+1]:
continue
if new_board[i][j] != new_board[i+1][j+1]:
continue
if new_board[i][j] != new_board[i+1][j]:
continue
q.append((i,j))
# ๋ ์ด์ ์ง์ธ ๋ธ๋ก์ด ์์ผ๋ฉด ๋ฆฌํด
if len(q) == 0:
return answer
# ์ง์ฐ๊ธฐ ์์
, ์ง์์ง ๋ธ๋ก ์นด์ดํธ
dx = [0,0,1,1]
dy = [0,1,0,1]
while q:
x,y = q.popleft()
for i in range(4):
if new_board[x+dx[i]][y+dy[i]] != '':
answer += 1
new_board[x+dx[i]][y+dy[i]] = ''
# ๋ธ๋ก ๋จ์ดํธ๋ฆฌ๊ธฐ
for i in range(m-1,1,-1):
for j in range(n):
if new_board[i][j] != '':
continue
temp = i
while temp > 0:
temp -= 1
if new_board[temp][j] != '':
new_board[i][j] = new_board[temp][j]
new_board[temp][j] = ''
break
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]2304๋ฒ: ์ฐฝ๊ณ ๋ค๊ฐํ (0) | 2023.08.11 |
---|---|
[๋ฐฑ์ค]14719๋ฒ: ๋น๋ฌผ (0) | 2023.08.01 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2023.06.22 |
[ํ๋ก๊ทธ๋๋จธ์ค]2018 ์นด์นด์ค ์์ถ (0) | 2023.06.22 |
[ํ๋ก๊ทธ๋๋จธ์ค]๊ณผ์ ์งํํ๊ธฐ (0) | 2023.06.17 |