๐กsolutions )
๐ฌ 2X2 ๋ธ๋ก์ด ์ฌ๋ผ์ง๊ณ ๋๋จธ์ง ์์ ์๋ ๋ธ๋ก์ด ๋จ์ด์ ธ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๋ ๋ก์ง์ ๋ณด๋ค ๊ฐ๋จํ ๊ตฌํํ๊ธฐ ์ํด ํ์ด์ ๋ค์ง์๋ค => zip๊ณผ list๋ก์ ๋งคํ์ ํตํด ์ ์นํ๋ ฌ ๋ง๋ค๊ธฐ
๐ฌ four_blocks ํจ์์์ 2X2 ๋ธ๋ก์ด ๋๋ ๊ฒฝ์ฐ์ ์์น๋ฅผ visit_set์ ๋ด์๋๋๋ฐ, ๊ฐ์ ๋ธ๋ก์ด ์ฌ๋ฌ 2X2์ ํฌํจ๋ ์ ์์ผ๋ฏ๋ก ์ค๋ณต์ ํผํ๊ธฐ ์ํด set ์๋ฃํ ํ์ฉ
๐ฌ ๋ชจ๋ 2x2์ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ ํ ๋ฐ๋ณต๋ฌธ์ผ๋ก 1๋ก ํ์ํด์ฃผ๊ณ -> ํ๋ ฌ์ ํ ํ๋ง๋ค ๋์๊ฐ๋ฉฐ 1์ ๊ฐ์๋งํผ '_'๋ก ์นํํ๊ณ ๋งจ ์์ ๋ถ์ด๋ ๊ฒ์ฒ๋ผ ๊ตฌํํ๋ค. ์ฆ, ๋๋จธ์ง ๋ธ๋ก๋ค์ด ์๋ก ๋ถ์ด ์๊ฒ ์ฌ๋ฐฐ์นํ๋ ๊ฒ.
๐ซcode )
def four_blocks(m, n, board):
visit_set = set()
for i in range(1, n):
for j in range(1, m):
if board[i][j] == board[i-1][j-1] == board[i-1][j] == board[i][j-1] != '_':
visit_set |= set([(i, j), (i-1, j-1), (i-1, j), (i, j-1)])
# 2x2๊ฐ ๋๋ ์ ๋ค์ 1๋ก ํ์
for i, j in visit_set:
board[i][j] = 1
# 1์ธ ์ ๋ค์ '_'๋ก ๋์ฒดํ๊ณ ๋งจ ์์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ฒ๋ผ ๊ตฌํ
for idx, row in enumerate(board):
tmp = ['_']*row.count(1)
board[idx] = tmp + [b for b in row if b != 1]
return len(visit_set)
def solution(m, n, board):
answer = 0
board = list(map(list, zip(*board))) # ํ์ด ๋ค์ง๊ธฐ
while True:
res = four_blocks(m, n, board)
if res == 0:
return answer
answer += res
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/17679?language=python3
ํ๋ ์ฆ4๋ธ๋ก
๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ํต๊ณผํ ์ ์ ์ฌ์ ๋ผ์ด์ธ์ ์ ๊ท ๊ฒ์ ๊ฐ๋ฐ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ์ด๋ฒ์ ์ถ์ํ ๊ฒ์ ์ ๋ชฉ์ ํ๋ ์ฆ4๋ธ๋ก.
๊ฐ์ ๋ชจ์์ ์นด์นด์คํ๋ ์ฆ ๋ธ๋ก์ด 2×2 ํํ๋ก 4๊ฐ๊ฐ ๋ถ์ด์์ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ฉด์ ์ ์๋ฅผ ์ป๋ ๊ฒ์์ด๋ค.
๋ง์ฝ ํ์ด ์์ ๊ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ๋ผ์ด์ธ์ด 2×2๋ก ๋ฐฐ์น๋ 7๊ฐ ๋ธ๋ก๊ณผ ์ฝ์ด 2×2๋ก ๋ฐฐ์น๋ 4๊ฐ ๋ธ๋ก์ด ์ง์์ง๋ค. ๊ฐ์ ๋ธ๋ก์ ์ฌ๋ฌ 2×2์ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ง์์ง๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ 2×2 ๋ชจ์์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ํ๊บผ๋ฒ์ ์ง์์ง๋ค.๋ธ๋ก์ด ์ง์์ง ํ์ ์์ ์๋ ๋ธ๋ก์ด ์๋๋ก ๋จ์ด์ ธ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๊ฒ ๋๋ค.
๋ง์ฝ ๋น ๊ณต๊ฐ์ ์ฑ์ด ํ์ ๋ค์ 2×2 ํํ๋ก ๊ฐ์ ๋ชจ์์ ๋ธ๋ก์ด ๋ชจ์ด๋ฉด ๋ค์ ์ง์์ง๊ณ ๋จ์ด์ง๊ณ ๋ฅผ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
์ ์ด๊ธฐ ๋ฐฐ์น๋ฅผ ๋ฌธ์๋ก ํ์ํ๋ฉด ์๋์ ๊ฐ๋ค.
TTTANT RRFACC RRRFCC TRRRAA TTMMMF TMMTTJ
๊ฐ ๋ฌธ์๋ ๋ผ์ด์ธ(R), ๋ฌด์ง(M), ์ดํผ์น(A), ํ๋ก๋(F), ๋ค์ค(N), ํ๋ธ(T), ์ ์ด์ง(J), ์ฝ(C)์ ์๋ฏธํ๋ค
์ ๋ ฅ์ผ๋ก ๋ธ๋ก์ ์ฒซ ๋ฐฐ์น๊ฐ ์ฃผ์ด์ก์ ๋, ์ง์์ง๋ ๋ธ๋ก์ ๋ชจ๋ ๋ช ๊ฐ์ธ์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ ์ํ๋ผ.
์ ๋ ฅ ํ์
- ์ ๋ ฅ์ผ๋ก ํ์ ๋์ด m, ํญ n๊ณผ ํ์ ๋ฐฐ์น ์ ๋ณด board๊ฐ ๋ค์ด์จ๋ค.
- 2 โฆ n, m โฆ 30
- board๋ ๊ธธ์ด n์ธ ๋ฌธ์์ด m๊ฐ์ ๋ฐฐ์ด๋ก ์ฃผ์ด์ง๋ค. ๋ธ๋ก์ ๋ํ๋ด๋ ๋ฌธ์๋ ๋๋ฌธ์ A์์ Z๊ฐ ์ฌ์ฉ๋๋ค.
์ถ๋ ฅ ํ์
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ช ๊ฐ์ ๋ธ๋ก์ด ์ง์์ง์ง ์ถ๋ ฅํ๋ผ.