안녕하세요 개발자님,
지뢰찾기 심사문제에서 인덱스가 '.'인 경우에 0을 도출하는 작업까진 마쳤는데요,
for x in range(i-1, i+2):
for y in range(j-1, j+2):
이후 matrix[x][y]가 '*'이 나올때마다 matrix[i][j] +=1을 수행하는 코드를 만드는 데 어려움이 있습니다.
while을 사용할까 생각도 해봤는데 왜 이 코드는 작동을 안하는 것이죠? 요소가 '.'일때 a라는 문자열을 요소값에 할당하고 그 후 while 반복문으로 matrix[x][y]가 *일때마다 1씩 값을 늘려나가고자 하는데, 생각대로 코드가 움직여주지 않아 답답합니다.
1. for i in range(row):
for j in range(col):
if matrix[i][j] == '*':
print('*', end='')
else:
print('a', end='')
for x in range(i-1, i+2):
for y in range(j-1, j+2): # x와 y의 범위를 정해서 주변 8개 값을 탐색
a = 0
while matrix[x][y] == '*': # 앞에 matrix의 요소가 *이 아닐 때 a라는 값을 할당했으므로
# 탐색 범위 내의 요소가 *일 때마다 반복적으로 a +1을 a에 할당하여
# matrix[i][j]를 다시 도출해낸다.
a += 1
print()
P.S. for반복문을 작성한 다음에 만약 위 코드에서
else:
print('a', end='')을 전제로 x,y범위를 정해서 코드를 짜려고 하면 print('a',end='')다음 줄부터
인덴팅을 해야 하나요? 인덴트 관련 에러가 너무 많이 떠서 여쭤봅니다.
* 심사문제 예시답안 같은 건 질문게시판에 별도로 요청해야 알려주시나요? 인터넷 답안지에는 방향만 제시되어 있어서 막힐 때 어떻게 해야 하는지 모르겠습니다.
예시 답안은 없습니다.
심사문제의 해설에는 가능하면 상세하게 도움을 제공하고 있습니다. 하지만, 문제를 풀이하는 방법은 여러 가지가 있을 수 있으므로 꼭 해설에서 제시하는 방법만이 해결 방향은 아닙니다.
심사에서는 해설에도 설명이 되어 있지만, 특정 조건을 만족하지 않을 때는 코드를 실행하지 않고 루프 처음으로 돌아가서 다음 단계, 즉 다음 좌표에 대해서 계산하는 요령이 필요합니다. 이를 위해 continue를 사용해야 합니다.
파이썬 들여쓰기 오류를 줄이는 방법은 Visual Studio Code 같은 전문 코드 에디터를 사용하는 겁니다. 파이썬에 기본 포함된 IDLE에서도 파일로 작성하면 자동 들여쓰기가 적용되니 오류를 많이 줄일 수 있습니다.