-
[Python] ๋ฐฑ์ค - 1018 ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ__Python/__Algorithm 2022. 3. 25. 19:33
๋ฌธ์
https://www.acmicpc.net/problem/1018
๐น ๋ฌธ์
์ง๋ฏผ์ด๋ ์์ ์ ์ ํ์์ MN๊ฐ์ ๋จ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ M×N ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ฐพ์๋ค. ์ด๋ค ์ ์ฌ๊ฐํ์ ๊ฒ์์์ผ๋ก ์น ํด์ ธ ์๊ณ , ๋๋จธ์ง๋ ํฐ์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ง๋ฏผ์ด๋ ์ด ๋ณด๋๋ฅผ ์๋ผ์ 8×8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ฒด์คํ์ ๊ฒ์์๊ณผ ํฐ์์ด ๋ฒ๊ฐ์์ ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๊ฐ ์นธ์ด ๊ฒ์์๊ณผ ํฐ์ ์ค ํ๋๋ก ์์น ๋์ด ์๊ณ , ๋ณ์ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฌ๊ฐํ์ ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ธ ์์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด ์ ์๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฒด์คํ์ ์์น ํ๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ฟ์ด๋ค. ํ๋๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ, ํ๋๋ ๊ฒ์์์ธ ๊ฒฝ์ฐ์ด๋ค.
๋ณด๋๊ฐ ์ฒด์คํ์ฒ๋ผ ์น ํด์ ธ ์๋ค๋ ๋ณด์ฅ์ด ์์ด์, ์ง๋ฏผ์ด๋ 8×8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ๋ธ ํ์ ๋ช ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ค์ ์น ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋น์ฐํ 8*8 ํฌ๊ธฐ๋ ์๋ฌด๋ฐ์๋ ๊ณจ๋ผ๋ ๋๋ค. ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐น ์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
๐น ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด ๋ฐฉ๋ฒ
๐น ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
๊ตฌํ ์ฝ๋
import sys input = sys.stdin.readline m,n = map(int,input().split()) matrix = [list(input()) for _ in range(m)] matrix = [[1 if matrix[i][j]=='B' else 0 for j in range (n)] for i in range (m)] def board(x,y): arr = [] w_check,b_check = 0,0 check = 0 for i in range(x,x+8): check += sum(matrix[i][y:y+8]) if check == 0 or check == 64: return 32 for i in range(x,x + 8): arr.append(matrix[i][y:y+8]) org = matrix[i][y:y + 8] w_corner = [0,1]*4 b_corner = [1,0]*4 if i%2 == 1: w_corner = [1,0]*4 b_corner = [0,1]*4 w_check += sum([1 for a,b in zip(org,w_corner) if a!=b]) b_check += sum([1 for a,b in zip(org,b_corner) if a!=b]) return min(w_check,b_check) change = 32 for i in range(m-7): for j in range(n-7): change = min(change,board(i,j)) print(change)
import sys input = sys.stdin.readline m,n = map(int,input().split()) matrix = [list(input()) for _ in range(m)] matrix = [[1 if matrix[i][j]=='B' else 0 for j in range (n)] for i in range (m)] def board(x,y): w_corner,b_corner = 0,0 check = 0 for i in range(x,x+8): check += sum(matrix[i][y:y+8]) if check%64 == 0: return 32 for i in range(x,x+8): for j in range(y,y+8): if matrix[i][j]: if (i+j)%2: b_corner +=1 else: w_corner +=1 else: if (i+j)%2: w_corner += 1 else: b_corner += 1 return min(b_corner,w_corner) change = 32 for i in range(m-7): for j in range(n-7): change = min(change,board(i,j)) print(change)
์คํ ๊ฒฐ๊ณผ
๐ก
728x90'__Python > __Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค - 1918 ํ์ ํ๊ธฐ์ (0) 2022.03.24 [Python] ๋ฐฑ์ค - 11723 ์งํฉ (0) 2022.03.24 [Python] ๋ฐฑ์ค - 2559 ์์ด (0) 2022.03.24 [Python] ๋ฐฑ์ค - 1952 ๋ฌํฝ์ด 2 (0) 2022.03.24 [Python] ๋ฐฑ์ค - 1913 ๋ฌํฝ์ด(๊ธฐ์ด ๋ฐฐ์ด๋ค๋ฃจ๊ธฐ) (0) 2022.03.24