반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120866
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(board):
b = []
n = len(board)
dx = [0, 0, -1, 1, -1, 1, -1, 1]
dy = [1, -1, 0, 0, 1, 1, -1, -1]
count = 0
for i in range(n):
for j in range(n):
if board[i][j] == 1:
b.append((i, j))
for x, y in b:
for i in range(8):
nx = dx[i] + x
ny = dy[i] + y
#범위를 넘어가는 경우 무시
if nx < 0 or ny < 0 or nx >= n or ny >= n:
pass
else:
board[nx][ny] = 1
for i in range(n):
for j in range(n):
if board[i][j] == 0:
count += 1
return count
- b : 지뢰가 있는 좌표를 저장할 리스트
- n : board의 크기
- dx, dy : 현재 좌표의 상하좌우 대각선을 확인할 리스트
주어진 2차원 배열의 board를 확인하면서 지뢰가 매설된 지역의 좌표를 b에 저장합니다.
위험지역으로 분류하기 위하여 저장된 b에서 x, y값을 받습니다.
dx, dy를 이용하여 상하좌우, 대각선을 확인하며 위험지역으로 분류하는 작업을 수행합니다.
이때 0보다 작거나 n보다 크거나 같은 값은 범위를 넘어가는 경우이기 때문에 무시합니다.
위험지역으로 분류할 수 있는 경우에는 지뢰가 있는 위치와 동일하게 1로 저장합니다.
다시한번 전체 board를 반복하면서 지뢰가 없는 지역(0)의 경우 +1을 하여 값을 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 다음 큰 숫자 파이썬(Python) (0) | 2022.11.16 |
---|---|
[코딩테스트] 프로그래머스 숫자의 표현 파이썬(Python) (0) | 2022.11.15 |
[코딩테스트] 프로그래머스 등수 매기기 파이썬(Python) (0) | 2022.11.15 |
[코딩테스트] 프로그래머스 평행 파이썬(Python) (0) | 2022.11.14 |
[코딩테스트] 프로그래머스 옹알이(1) 파이썬(Python) (0) | 2022.11.14 |