Python Basic 9 | 지뢰 찾기

devheyrin·2022년 1월 7일
0

python basic

목록 보기
9/19

Solution 1. 탐색 범위 인덱스를 리스트로 만들기

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, -10, 00, 1
1, -11, 01, 1

matrix[i][j] 를 0,0이라고 한다면, 인접 요소 중에 지뢰가 있는지 확인하기 위해서 위와 같은 인덱스를 탐색해야 한다.

탐색 대상 인덱스를 target이라는 2차원 리스트로 만든 뒤, matrix[i][j]. 인 경우에 한해 matrix[i+x][j+y] 가 지뢰인지 확인한다.

지뢰의 갯수를 matrix[i][j] 에 넣어주고, for 문을 이용해 이어서 출력한다.

Solution 2. 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문을 활용해 범위를 지정한다.

profile
개발자 헤이린 🔜 프로덕트 매니저로 나아가는 중!

0개의 댓글