반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120866
배열을 다뤄본 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 자기 자신의 좌표를 포함해 인접한 상하좌우 대각선에 대한 9개 좌표 dr, dc배열을 선언해줍니다.
2. 정답 변수 answer를 선언 후 0으로 초기화합니다.
3. n을 선언 후 board의 길이를 저장합니다.
4. is_safe배열 선언 후 n*n으로 각 방을 1로 저장합니다.
📔 풀이과정
n * n으로 for loop를 수행하며 다음을 진행합니다.
1. 지뢰인 경우 9개의 좌표가 모두 위험지대로 바뀌어야하므로 is_safe에 해당 좌표들을 0으로 갱신합니다. 다음 좌표는 지역변수 nr, nc를 선언해 현재 좌표 i, j 에 각각 dr[dir], dc[dir[을 더해줌으로써 구할 수 있습니다.
2. is_safe의 원소를 순회하며 안전지대라면 answer를 1씩 더해줍니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
def solution(board):
dr = [-1, -1, -1, 0, 0, 0, 1, 1, 1]
dc = [-1, 0, 1, -1, 0, 1, -1, 0, 1]
answer = 0
n = len(board)
is_safe = [[1]*n for _ in range(n)]
for i in range(n):
for j in range(n):
if board[i][j] == 0:
continue
for dir in range(9):
nr = i + dr[dir]
nc = j + dc[dir]
if 0 > nr or nr >= n or 0 > nc or nc >= n:
continue
is_safe[nr][nc] = 0
for i in range(0, n):
for j in range(0, n):
if is_safe[i][j] == 1:
answer += 1
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - 프로그래머스(PCCE 기출문제) : 8번 / 닉네임 규칙 (0) | 2024.11.05 |
---|---|
(Python3) - 프로그래머스(2024 KAKAO WINTER INTERNSHIP) : 가장 많이 받은 선물 (0) | 2024.11.04 |
(Python3) - 프로그래머스(코딩테스트 입문) : 저주의 숫자 3 (1) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 외계어 사전 (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 삼각형의 완성조건 (2) (0) | 2024.11.03 |