col, row = map(int, input().split())
matrix = []
for i in range(row):
matrix.append(list(input()))
for a in range(row):
for b in range(col):
if matrix[a][b] == '*':
continue
else:
matrix[a][b] = 0
i=0
j=0
for i in range(row):
for j in range(col):
for y in range(i - 1, i + 2):
for x in range(j - 1, j + 2):
if y < 0 or x < 0 or y >= row or x >= col:
continue
elif matrix[y][x] == '*':
matrix[i][j] += 1
for q,w in(matrix):
print(q,w)
이렇게 코드를 짰는데 elif 문에만 들어가면 matrix[i][j]가 str이 됩니다.
어디가 문제일까요...?
print(matrix)
print(i, ",", j)
matrix[i][j] += 1
이렇게 출력해보면 알 수 있습니다.
matrix[i][j]가 '*'이면 지뢰입니다. 이 지뢰는 문자열입니다.
이 문자열에 +1 연산은 할 수 없습니다.
matrix[y][x]도 '*'이고, matrix[i][j]도 '*'입니다.
같은 지뢰를 가리키고 있다는 뜻이죠.
입력을
3 3
...
...
..*
이렇게 해 놓고 디버깅해보세요.
문의한 코드는 삭제합니다.
for q,w,e,r,t in matrix:
print(q,w,e,r,t)
이렇게 고쳐서 제 idle에선 돌아가고, 정답과 같은 출력값을 내는데 심사에선 코드가 실행되지 않는다고 통과하지 못하네요. 뭐가 문제일까요?
(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 3월 20일, 금요일, 오후 1:32)
IDLE 메뉴에서 New > File을 선택해서 파일로 작성하고 F5 키로 실행해보세요.
일단, 현재 실행되지 않습니다.
Traceback (most recent call last): File "/tmp/260017110/main.py", line 39, in <module> for q,w,e,r,t in matrix: ValueError: not enough values to unpack (expected 5, got 3)이와 같은 에러가 발생합니다.
온라인 파이썬에서 바로 실행하고 결과를 볼 수 있습니다.
https://glot.io/snippets/flq484unu3입력
3 3
...
...
..*
에 대해서 출력해보면
[[0, 0, 0], [0, 1, 1], [0, 1, '*']]이렇게 나오는 것을 보면 문제는 제대로 해결하는 것으로 보입니다.
단, 문제가 원하는 형식으로 출력해야 합니다.
000
011
01*
이렇게 출력해야 합니다.
출력 부분을 해결해보세요.
지뢰찾기 판의 크기는 3x3, 5x5, 10x10 등 다양하게 입력됩니다.
출력은 for 문을 두 개 쓰면 됩니다. 중첩 for 루프를 사용하면 됩니다.