문제출처: https://www.acmicpc.net/problem/1303
1. 문제 접근 방식
W와 B일때 경우를 나눠서 BFS를 돌리면 될 것 같았다.
한 개의 함수를 만들고 마지막 인자에 W와 B를 각각 넣어준다.
2. 내가 푼 코드
import sys
from collections import deque
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(x,y,color):
queue = deque()
queue.append((x,y))
graph[x][y] = 0
cnt = 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
if nx < 0 or ny < 0 or nx>=m or ny>=n:
continue
if graph[nx][ny] == color:
cnt+=1
graph[nx][ny] = 0
queue.append((nx,ny))
return cnt
n, m = map(int,sys.stdin.readline().split())
graph = [list(sys.stdin.readline().strip()) for _ in range(m)]
sumW = 0
sumB = 0
for i in range(m):
for j in range(n):
if graph[i][j] == 'W':
sumW += pow(bfs(i,j,'W'),2)
elif graph[i][j] == 'B':
sumB += pow(bfs(i,j,'B'),2)
print(sumW, sumB)
3. 결과 및 느낀점
어떤 수의 X제곱을 구하고 싶을 땐 pow함수를 사용하자.
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 22352 Python (0) | 2021.09.28 |
---|---|
[Boj/백준] 6118 Python (0) | 2021.09.27 |
[Boj/백준] 1743 Python (0) | 2021.09.26 |
[Boj/백준] 3187 Python (0) | 2021.09.24 |
[Boj/백준] 14502 Python (0) | 2021.09.23 |