알고리즘 연습

[4396] 지뢰 찾기 - Python

밀깜 2022. 6. 13. 15:28

 

1. 문제

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

 

2. 풀이

 

def count_mine(x, y):
    dx = [-1, -1, -1, 0, 0, 1, 1, 1]
    dy = [-1, 0, 1, -1, 1, -1, 0, 1]
    
    count = 0
    for i in range(8):
        nx = x + dx[i]
        ny = y + dy[i]

        if 0 <= nx < n and 0 <= ny < n:
            if mine_map[nx][ny] == '*':
                count += 1
    return count


# 1. Read the information
n = int(input())
mine_map = [list(input()) for _ in range(n)]
game_map = [list(input()) for _ in range(n)]
result = [['.'] * n for _ in range(n)]

# 2. Draw the situation
for i in range(n):
    for j in range(n):
        if mine_map[i][j] == '.' and game_map[i][j] == 'x':
            result[i][j] = count_mine(i, j)

        if mine_map[i][j] == '*' and game_map[i][j] == 'x':
            for k in range(n):
                for l in range(n):
                    if mine_map[k][l] == '*':
                        result[k][l] = '*'

# 3. Print the result
for i in range(n):
    for j in range(n):
        print(result[i][j], end='')
    print()

 

3. 배운점

 

 

4. 개선할 점

 

 


풀이 오류 지적, 다른 접근법 공유, 그 밖에 질문 등 모든 의견을 환영합니다.