본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 4396번 지뢰 찾기

by 현장 2022. 5. 14.

-Code

def search(x, y, arr, l):
    dx = [-1, -1, -1, 0, 0, 0, 1, 1, 1]
    dy = [-1, 0, 1, -1, 0, 1, -1, 0, 1]
    cnt = 0
    for i in range(9):
        if 0 <= x + dx[i] < l and 0 <= y + dy[i] < l:
            if arr[x + dx[i]][y + dy[i]] == '*':
                cnt += 1
    return cnt


def game(arr, arr2, l, f):
    answer = []

    for i in range(l):
        line = []
        for j in range(l):
            if arr[i][j] == 'x':
                if arr2[i][j] == '*' and not f:
                    f = True
                    return game(arr, arr2, l, f)

                if arr2[i][j] == '*':
                    line.append(arr2[i][j])
                else:
                    line.append(search(i, j, arr2, l))
            else:
                if f:
                    line.append(arr2[i][j])
                else:
                    line.append('.')
        answer.append(line)

    return answer


n = int(input())
mine = [input() for _ in range(n)]
click = [input() for _ in range(n)]
flag = False
result = game(click, mine, n, flag)
for i in result:
    print(*i, sep='')

예제 입출력은 나오나 틀려서 게시판을 보니 지뢰를 밟은 후는 x가 있는 곳은 주변 지뢰 숫자를 표현해야하고 아닌 곳은 지뢰가 있는 곳 없는 곳을 나타내야하는 문제였습니다. 하지만 그 것을 수정하고 또 다른 테스트 케이스인 처음이 아닌 2번째 줄 이후에 지뢰를 밟을 경우 그 줄만 표현이 되게 되어서 2번째 줄이후 밟을 경우 다시 처음부터 계산을 하게 하도록 바꿨습니다.