오늘도 개발

파이썬 코딩 도장 - 지뢰 찾기(23.7) 본문

자료구조 & 알고리즘/Leetcode

파이썬 코딩 도장 - 지뢰 찾기(23.7)

Sueeeeeee 2022. 4. 10. 18:46

문제

표준 입력으로 2차원 리스트의 가로(col)와 세로(row)가 입력되고 그 다음 줄부터 리스트의 요소로 들어갈 문자가 입력됩니다.

이때 2차원 리스트 안에서 *는 지뢰이고 .은 지뢰가 아닙니다.

지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요.

# 입력
3 3
.**
*..
.*.

# 출력
2**
*43
2*1

 

해결 방식

from pprint import pprint

col, row = map(int, input().split())
matrix = []
for i in range(row):
    matrix.append(list(input()))

for i in range(row):
    for j in range(col):
        if matrix[i][j] == '*':
            continue
            
        else:
            matrix[i][j] = 0
            # 각 요소 주변을 모두 검사, 지뢰가 나오면 1씩 추가
            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
pprint(matrix, indent = 1, width=30)