코딩하는 해맑은 거북이

[Python] 지뢰 찾기 - 백준 본문

코딩테스트

[Python] 지뢰 찾기 - 백준

#CJE 2022. 12. 23.
해당 글은 백준 1996번 문제 '지뢰 찾기'를 다룬다.

문제

https://www.acmicpc.net/problem/1996

 

1996번: 지뢰 찾기

첫째 줄에 N(1 ≤ N ≤ 1,000)이 주어진다. 다음 N개의 줄에는 지뢰 찾기 map에 대한 정보가 주어지는데 '.' 또는 숫자로 이루어진 문자열이 들어온다. '.'는 지뢰가 없는 것이고 숫자는 지뢰가 있는 경

www.acmicpc.net

 

설명

해당 문제는 지뢰가 없는 곳에서 둘러싼 (상하좌우 + 대각4가지) 총 8가지 구역 중에 지뢰가 있는 부분을 다 더해줘서 업데이트 시켜주면 된다. 만약 8구역의 총합이 10 이상이면 M으로 출력하고, 지뢰가 있는 부분은 *로 출력하면 되는 간단한 구현 문제이다.

 

 

코드

n = int(input())
arr = []
for i in range(n):
    arr.append(list(input()))

dx = [-1, 1, 0, 0, -1, -1, 1, 1]
dy = [0, 0, 1, -1, -1, 1, -1, 1]

result = [[0 for _ in range(n)] for _ in range(n)]

for i in range(n):
    for j in range(n):
        if arr[i][j] == '.':
            count = 0
            for k in range(8):
                nx = i + dx[k]
                ny = j + dy[k]
                if nx >= 0 and nx < n and ny >= 0 and ny < n and arr[nx][ny] != '.':
                    count += int(arr[nx][ny])
            result[i][j] = str(count) if count < 10 else 'M'
        else:
            result[i][j] = '*'

for i in range(n):
    print(''.join(result[i]))

     

 

 

'코딩테스트' 카테고리의 다른 글

[Python] 시리얼 번호 - 백준 (정렬)  (0) 2022.12.25
[Python] 문서 검색 - 백준  (0) 2022.12.24
[Python] GCD 합 - 백준  (0) 2022.12.23
[Python] 분수 합 - 백준  (0) 2022.12.23
[Python] 요세푸스 문제 - 백준  (0) 2022.12.22
Comments