[프로그래머스 lv 0] 안전지대 (코딩테스트 입문) 2️⃣

2025. 3. 4. 20:41·✨ 공부 기록/알고리즘 & 코딩테스트
def solution(board):
    answer = 0
    bomb = [[-1,1],[0,1],[1,1],[-1,0],[1,0],[-1,-1],[0,-1],[1,-1]]
    x = len(board[0])
    y = len(board)
    new_board = [[0]*x for _ in range(y)]

    for i in range(x):
        for j in range(y):
            if board[i][j]==1:
                new_board[i][j] = 1
                for idx in bomb:
                    if i+idx[0]>=0 and i+idx[0]<x and j+idx[1]>=0 and j+idx[1]<y:
                        new_board[i+idx[0]][j+idx[1]]=1
    
    for k in range(len(new_board)):
        for l in range(len(new_board[0])):
            if new_board[k][l]==0:
                answer+=1
    
    return answer

 

 

+ 250818 다시 풀기

def solution(board):
    answer = 0
    empty_board = [[0]*len(board[0]) for _ in range(len(board[0]))]
    bombs = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]
    
    for i in range(len(board[0])):
        for j in range(len(board[0])):
            if board[i][j]==1:
                empty_board[i][j]=1
                for bomb in bombs:
                    dx_coor = i+bomb[0]
                    dy_coor = j+bomb[1]
                    try:
                        empty_board[dx_coor][dy_coor]=1
                    except:
                        pass
                        
    for k in range(len(board[0])):
        answer += empty_board[k].count(0)
    return answer

 

테스트 케이스 하나 빼고는 다 통과한다. 그러나 역시 try except 보단 범위를 맞춰서 처리하는게 더 좋을 듯 하다.

 

def solution(board):
    answer = 0
    empty_board = [[0]*len(board[0]) for _ in range(len(board[0]))]
    bombs = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]
    for i in range(len(board[0])):
        for j in range(len(board[0])):
            if board[i][j]==1:
                empty_board[i][j]=1
                for bomb in bombs:
                    dx_coor = i+bomb[0]
                    dy_coor = j+bomb[1]
                    if dx_coor>=0 and dx_coor<len(board[0]) and dy_coor>=0 and dy_coor<len(board[0]):
                        empty_board[dx_coor][dy_coor]=1
                    
    for k in range(len(board[0])):
        answer += empty_board[k].count(0)
    return answer

 

이렇게 하면 모두 통과한다.

저작자표시 비영리 변경금지 (새창열림)

'✨ 공부 기록 > 알고리즘 & 코딩테스트' 카테고리의 다른 글

[프로그래머스 lv 0] 다음에 올 숫자 (코딩테스트 입문)  (0) 2025.03.06
[프로그래머스 lv 0] 연속된 수의 합 (코딩테스트 입문) 2️⃣  (0) 2025.03.05
[프로그래머스 lv 0] 분수의 덧셈 (코딩테스트 입문)_Fraction 사용  (0) 2025.03.04
[프로그래머스 lv 0] 평행 (코딩테스트 입문) 2️⃣  (0) 2025.03.04
[프로그래머스 lv 0] 옹알이 (1) (코딩테스트 입문) 2️⃣  (0) 2025.03.04
'✨ 공부 기록/알고리즘 & 코딩테스트' 카테고리의 다른 글
  • [프로그래머스 lv 0] 다음에 올 숫자 (코딩테스트 입문)
  • [프로그래머스 lv 0] 연속된 수의 합 (코딩테스트 입문) 2️⃣
  • [프로그래머스 lv 0] 분수의 덧셈 (코딩테스트 입문)_Fraction 사용
  • [프로그래머스 lv 0] 평행 (코딩테스트 입문) 2️⃣
LaonMoon
LaonMoon
  • LaonMoon
    스토리생성연구블로그
    LaonMoon
  • 전체
    오늘
    어제
  • 공지사항

    • About me👋
    • 분류 전체보기
      • ✨ Story Generation
        • 논문 리뷰
        • 연구 관련 생각
      • ✨ 자연어 처리
        • (짧은) 논문 리뷰
        • HuggingFace
        • Transformer 구현
      • ✨ 공부 기록
        • 알고리즘 & 코딩테스트
        • 딥러닝
        • 웹 개발
        • Flutter
        • Flask
        • Android
        • NLP
        • Docker&k8s
        • Database
        • [24-1] 데이터 분석
        • [24-1] RL
      • ✨ 포트폴리오
        • 2020
        • 2021
        • 2022
        • 2023
        • 2024
        • 2025
      • 프로그래밍
        • 오류(Error)정리
        • 시행착오
        • 리눅스 명령어
        • 공부내용 정리
      • AI Playground
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LaonMoon
[프로그래머스 lv 0] 안전지대 (코딩테스트 입문) 2️⃣
상단으로

티스토리툴바