728x90
๐ ๋ฐฑ์ค 1018 - ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
๋ฐฑ์ค 1018 - ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
โก๏ธ ๋์ ํ์ด
์ด ๋ฌธ์ ์์ ๊ณ ๋ฏผํด์ผ ํ ๋ถ๋ถ์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ค.
- ์ข์ธก ์๋จ์ด
B
/W
๋ถํฐ ์์ํ๋ ์ฒด์คํ์ ๋ง๋ ๋ค. (์ด๋, ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์์น ๋์ด์์ด์ผ ํจ.) N * M
ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. (์ด๋,N
์ ์ธ๋ก,M
์ ๊ฐ๋ก)N * M
ํฌ๊ธฐ์ ๋ณด๋๋ฅผ8 * 8
ํํ๋ก ์๋ฅด๊ณ , 1๋ฒ์์ ์์ฑํ ๋ ๊ฐ์ ์ฒด์คํ์ ์ขํ๋ฅผ ์๋ก ๋น๊ตํ๋ค.- ์ขํ์ ๊ฐ์ด ์๋ก ๋ค๋ฅด๋ฉด
cnt
๋ฅผ ์ฆ๊ฐํ๋๋ฐ, ๋ ์์ ๊ฐ์return
ํ๋ค.
1๋ฒ ๋ฐฉ๋ฒ
์ ์ขํ๊ฐ ๋ํ๋ด๋ ์ผ์ ํ ๊ท์น์ผ๋ก ๊ตฌํํ์ง ์๊ณ ๋ด ๋ฐฉ์๋๋ก ๊ตฌํํ๋ค๊ฐ ์๊ฐ์ ๋ค ๊น๋จน๊ณ ๊ตฌํ์ ํ์ง๋ ๋ชปํ๋ค. ๐ญ ๐ญ W
๊ฐ ๋จผ์ ์์ํ๋ ์ฒด์คํ์ ๋ง๋ค ๋ ์ขํ๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ด ์๋ค.
W
๊ฐ ๋ํ๋ด๋ ์ขํ๋ฅผ ์์ฑํ๋ค.W
์ ์ขํi+j
๋ ๋ชจ๋ ์ง์์ด๋ค.B
๊ฐ ๋ํ๋ด๋ ์ขํ๋ฅผ ์์ฑํ๋ค.B
์ ์ขํi+j
๋ ๋ชจ๋ ํ์์ด๋ค.
์ดํ n*m
๋ฐฐ์ด์์ 8*8
์ขํ๋ฅผ ๋ชจ๋ ํ์ธํด์ผ ํ๋๋ฐ, ์ด๊ฒ๋ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชฐ๋๋๋ฐ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ๋ฉด ๋๋ค. ์ดํด๊ฐ ์ ์ ๋๋ค๋ฉด ์ ๋ฒ์ ์์ฑํ ๊ธ์ ๋ณด์.
n-7
,m-7
์ ๋ฒ์๋ก ์ด์ค ๋ฐ๋ชฉ๋ฌธ์ ์ ์ธํ๋ค.n
๊ณผm
์ด ๋ชจ๋ 8์ด๋ฉด,n-7 = 1
,m-7 = 1
์ด ๋๋๋ฐ ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋1-1
๊น์ง ์ธ๊ธฐ๋๋ฌธ์0
๊น์ง๋ง ๋ฒ์๋ก ์กํ๋ค.- 1๋ฒ์์ ์ ์ธํ ์ด์ค ๋ฐ๋ณต๋ฌธ์ด
0
์ผ๋ก ๊ณ ์ ๋๋๋์8*8
์ ๋ฒ์๋ก ํ๋ฒ ๋ ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ ์ธํ๋ค. chess
ํ๊ณผ ๋น๊ตํ๋ค.
๊ฐ์ด 2๊ฐ ์ด์์ธ๋ฐ ์ต์๊ฐ์ ๊ฐฑ์ ํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ์.
- cnt = min(cnt, temp1)
- cnt = min(cnt, temp2)
# 4์ค ๋ฐ๋ณต๋ฌธ
n, m = map(int, input().split())
chess_W = [[0] * m for _ in range(n)]
chess_B = [[0] * m for _ in range(n)]
arr = [list(input()) for _ in range(n)]
cnt = float('inf')
for i in range(n):
for j in range(m):
if not (i+j) % 2:
chess_W[i][j] = 'W'
chess_B[i][j] = 'B'
else:
chess_W[i][j] = 'B'
chess_B[i][j] = 'W'
for i in range(n-7):
for j in range(m-7):
temp_W, temp_B = 0, 0
for x in range(8):
for y in range(8):
if arr[i+x][j+y] != chess_W[i+x][j+y]:
temp_W += 1
if arr[i+x][j+y] != chess_B[i+x][j+y]:
temp_B += 1
cnt = min(cnt, temp_W)
cnt = min(cnt, temp_B)
print(cnt)
# 2์ค ๋ฐ๋ณต๋ฌธ + ํจ์
n, m = map(int, input().split())
chess_W = [[0] * m for _ in range(n)]
chess_B = [[0] * m for _ in range(n)]
arr = [list(input()) for _ in range(n)]
cnt = float('inf')
def check(a, b):
global cnt
temp_W, temp_B = 0, 0
for x in range(8):
for y in range(8):
if arr[a + x][b + y] != chess_W[a + x][b + y]:
temp_W += 1
if arr[a + x][b + y] != chess_B[a + x][b + y]:
temp_B += 1
cnt = min(cnt, temp_W)
cnt = min(cnt, temp_B)
return cnt
for i in range(n):
for j in range(m):
if not (i+j) % 2:
chess_W[i][j] = 'W'
chess_B[i][j] = 'B'
else:
chess_W[i][j] = 'B'
chess_B[i][j] = 'W'
for i in range(n-7):
for j in range(m-7):
check(i, j)
print(cnt)
๋ฐ์ํ
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 20291 - ํ์ผ ์ ๋ฆฌ (0) | 2021.05.24 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 9093 - ๋จ์ด ๋ค์ง๊ธฐ (0) | 2021.05.24 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1436 - ์ํ๊ฐ๋ ์ (0) | 2021.05.22 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 9625 - BABBA (0) | 2021.05.21 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 4396 - ์ง๋ขฐ (2) | 2021.05.20 |
๋๊ธ