두 개 이상의 선분이 겹치는 경우.. 각 선분의 시작과 끝 범위내 원소들의 중복을 세면 되겠다.
각 선분 범위내 정수 원소를 구한다.
각 선분간 겹치는 정수 원소를 센다.
def solution(lines):
answer = 0
elements = []
for l in lines:
for i in range(l[0], l[-1]):
elements.append(i)
seen = []
cnt = []
for i in elements:
if i in seen:
cnt.append(i)
seen.append(i)
return len(set(cnt))
return answer
중복을 제거하기 위해 set() 함수를 사용해야한다.!
우선 지뢰가 매설된 좌표를 구하는게 먼저겠지?
step1. 매설된 지뢰의 개수와 좌표를 구한다.
step2. 인접 위치에 임의의 숫자를 넣어준다.
step3. 0의 개수만 카운트한다.!
def solution(board):
answer = 0
mine = []
for index, col in enumerate(board):
for _index, row in enumerate(col):
if row == 1:
mine += [[index, _index]]
if board == [[1]]:
return 0
for _iter in mine:
# 지뢰 좌, 우 위험지역 표시
if _iter[1] == len(board)-1: #지뢰가 우측 끝에 존재할 경우:
board[_iter[0]][_iter[1]-1] += 1
loc = "right"
elif _iter[1] == 0: #지뢰가 좌측 끝에 존재할 경우
board[_iter[0]][_iter[1]+1] += 1
loc = "left"
else:
board[_iter[0]][_iter[1]-1] += 1
board[_iter[0]][_iter[1]+1] += 1
loc = "center"
if loc == "right":
if _iter[0] == 0: #최상단에 지뢰가 매설 된 경우
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]-1] += 1
elif _iter[0] == len(board)-1:
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]-1] += 1
else:
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]-1] += 1
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]-1] += 1
elif loc == "left":
if _iter[0] == 0: #최상단에 지뢰가 매설 된 경우
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]+1] += 1
elif _iter[0] == len(board)-1:
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]+1] += 1
else:
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]+1] += 1
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]+1] += 1
elif loc == "center":
if _iter[0] == 0: #최상단에 지뢰가 매설 된 경우
board[_iter[0]+1][_iter[1]-1] += 1
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]+1] += 1
elif _iter[0] == len(board)-1:
board[_iter[0]-1][_iter[1]-1] += 1
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]+1] += 1
else:
board[_iter[0]-1][_iter[1]-1] += 1
board[_iter[0]+1][_iter[1]-1] += 1
board[_iter[0]+1][_iter[1]] += 1
board[_iter[0]+1][_iter[1]+1] += 1
board[_iter[0]-1][_iter[1]] += 1
board[_iter[0]-1][_iter[1]+1] += 1
for i in board:
for j in i:
if j == 0:
answer += 1
return answer
1x1의 경우 예외로 조건문을 달아두었다.