문제


막힌부분

def solution(board):
    n=len(board)
    #지뢰가 있는 좌표를 tuple 형태로 저장, 리스트에 append
    lst=[]
    for i in range(n):
        for j in range(n):
            if board[i][j]==1:
                t=(i,j)
                lst.append(t)
    # #지뢰에 인접한 위,아래,좌,우 대각선 칸
    # for dx in (-1,0,1):
    #     for dy in (-1,0,1):
    #         for i in len(lst):
    #             nx=lst[i][0]+dx
    #             ny=lst[i][1]+dy
    
    # #인덱스에 지뢰가 있는지 표시
    # danger=[[0]*n for _ in range(n)]
    # answer = 0
    # for i in range(n):
    #     if danger[i]>=1:
    #         answer+=1
    # return n-answer
    return lst

지뢰가 속한 위치의 인덱스를 튜플로 만들고, 그 인덱스를 lst라는 리스트에 넣기
해결 해야할것

  • 지뢰에 인접한 부분의 위 아래 양옆 대각선 좌표를 danger 구간으로 정하기
  • danger 구간에 해당하는 인덱스값에 +1하기
  • danger값이 1이상인 개수를 cnt로 세서 전체 n*n에서 빼서 답을 구하기
    - 범위 초과 에러 : danger==0인 부분만

소스코드

def solution(board):
    n=len(board)
    answer=0 #루프 전에 초기화,지뢰가 없을때 0
    #지뢰가 있는 좌표를 tuple 형태로 저장, 리스트에 append
    lst=[]
    for i in range(n):
        for j in range(n):
            if board[i][j]==1:
                t=(i,j)
                lst.append(t)
    #인덱스에 지뢰가 있는지 표시
    danger=[[0]*n for _ in range(n)]
    
    #지뢰에 인접한 위,아래,좌,우 대각선 칸
    for x,y in lst:
        for dx in (-1,0,1):
            for dy in (-1,0,1):
                nx=x+dx
                ny=y+dy
                if 0<=nx<n and 0<=ny<n:
                    danger[nx][ny]=1
    for i in range(n):
        for j in range(n):
            #위험칸을 세서 빼지 말고 안전한 칸의 개수를 센다
            if danger[i][j]==0:
                answer+=1
    return answer
profile
여기 초과학기가 확정되어 울면서 학교를 다니는 사람이 있습니다.

0개의 댓글