col, row = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
target = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 1], [1, -1], [1, 0], [1, 1]]
for i in range(col):
for j in range(row):
if matrix[i][j] == "*":
continue
elif matrix[i][j] == ".":
cnt = 0
for x, y in target:
if 0 <= i + x < col and 0 <= j + y < row:
if matrix[i+x][j+y] == "*":
cnt += 1
matrix[i][j] = str(cnt)
for i in matrix:
print(''.join(i))
-1, -1 | -1, 0 | -1, 1 |
---|---|---|
0, -1 | 0, 0 | 0, 1 |
1, -1 | 1, 0 | 1, 1 |
matrix[i][j]
를 0,0이라고 한다면, 인접 요소 중에 지뢰가 있는지 확인하기 위해서 위와 같은 인덱스를 탐색해야 한다.
탐색 대상 인덱스를 target
이라는 2차원 리스트로 만든 뒤, matrix[i][j]
가 .
인 경우에 한해 matrix[i+x][j+y]
가 지뢰인지 확인한다.
지뢰의 갯수를 matrix[i][j]
에 넣어주고, for 문을 이용해 이어서 출력한다.
col, row = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
for i in range(col):
for j in range(row):
if matrix[i][j] == '*':
continue
elif matrix[i][j] == '.':
cnt = 0
for x in range(i-1, i+2):
for y in range(j-1, j+2):
if 0 <= x < col and 0 <= y < row and matrix[x][y] == '*':
cnt += 1
matrix[i][j] = str(cnt)
for i in matrix:
print(''.join(i))
탐색 범위를 리스트로 만들지 않고, for문을 활용해 범위를 지정한다.