Algorithm Study/Python

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

728x90
반응형

풀기 전 생각해보기😮

  • 지뢰가 있을 경우 모든 지뢰의 위치 표시
  • 이차원 배열의 방향 탐색

풀이🛫

N = int(input())
mine = [list(input()) for i in range(N)]	# 지뢰의 위치
open = [list(input()) for i in range(N)]	# 지뢰가 있는지 확인한 위치
zone = [[0 for i in range(N)] for j in range(N)]	# 플레이어가 보는 위치

# U UR R DR D DL L UL
dcol = [1, 1, 0, -1, -1, -1, 0, 1]
drow = [0, 1, 1, 1, 0, -1, -1, -1]

for col in range(N):
    for row in range(N):
        # 지뢰가 있는 곳 주위의 값 표시
        if mine[col][row] == "*":
            for v in range(8):
                ncol = col+dcol[v]
                nrow = row+drow[v]
                if 0<=ncol<N and 0<=nrow<N:
                    zone[ncol][nrow] += 1
                    
for col in range(N):
    for row in range(N):
        # 지뢰가 있는 곳을 표시
        if mine[col][row] == "*":
            zone[col][row] = "*"

        # 플레이어가 확인하지 못한 곳을 표시
        if open[col][row] == ".":
            zone[col][row] = "."

    # 플레이어가 열어본 위치가 지뢰가 있는 곳일 경우
    for row in range(N):
        if open[col][row] == "x" and mine[col][row]=="*":
            # 모든 지뢰의 위치 표시
            for y in range(N):
                for x in range(N):
                    if mine[y][x] == "*":
                        zone[y][x] = "*"    
            
for i in zone:
    for j in i:
        print(j, end="")
    print()

 

링크💎

 

4396번: 지뢰 찾기

지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어

www.acmicpc.net

 

후기 😎

  • 차근차근