#29733
R,C,H= map(int,input().split())
box = []
for i in range (0,H):
box_lev = []
for j in range (0,R):
a = list(input())
box_lev.append(a)
box.append(box_lev)
ans = [[[0 for _ in range (0,C)] for _ in range (0,R)] for _ in range (0,H)]
for i in range (0,H):
for j in range (0,R):
for k in range (0,C):
if box[i][j][k] == "*":
ans[i][j][k] = "*"
else:
cnt = 0
for a in (-1,0,1):
for b in (-1,0,1):
for c in (-1,0,1):
x = i + a
y = j + b
z = k + c
if 0 <= x < H and 0 <= y < R and 0 <= z < C:
if box[x][y][z] == "*":
cnt += 1
ans[i][j][k] = cnt % 10
result = []
for i in range (0,H):
for j in range (0,R):
z = "".join(str(t) for t in ans[i][j])
result.append(z)
for a in result:
print(a)
정말 단순히,지뢰찾기의 원리에 따라서 진행했습니다.
한가지 귀찮았던 점은 한개의 정육면체가 최대 26개 (즉 3 x 3 x 3에서 본인 제외)의 정육면체와 맞닿아있을 수 있다고 한 점 같습니다.
처음에는 그냥 26개의 경우를 전부 나열해봐 ?!?!? 했다가
결국 그냥 for문 3번 쓰는것으로 하였습니다.
반복문이 계속되는 형태를 좋아하는 편은 아닌데, 어쩌다보니 이렇게 되어버렸네요.
참 간만의 포스팅입니다. 한동안 자소서 쓰느라 현생이 많이 바쁘군요 ... 그리고 석사 논문까지 ... 이게 여름방학이야 뭐야
좀만 더 힘내서 달려가봐야겠습니다.