728x90
def solution(board, nums):
n = len(board) # board의 길이
nums = dict.fromkeys(nums, True) # nums 리스트 값을 키로 변환하여 dict로 만들어준다,
# nums = {14: True, 3: True, ... , 5: True, 15: True}
row_list = [0] * n
col_list = [0] * n
left_diagonal = 0
right_diagonal = 0
for i in range(n): # O(n)
for j in range(n): # O(n)
if board[i][j] in nums: # O(1)
board[i][j] = 0 # make it checked
row_list[i] += 1
col_list[j] += 1
if i == j:
left_diagonal += 1
if n - 1 - i == j:
right_diagonal += 1
answer = 0
# row_list : 각 row의 checked 개수
answer += sum([1 for i in row_list if i == n]) # 세로
answer += sum([1 for i in col_list if i == n]) # 가로
# list comprehension을 사용해서 row_list의 원소가 n과 같다면 즉, 빙고라면 새로 만들어질 list의 원소는 1
# 만약 빙고가 2개라면 [1,1] -> sum으로 answer에 추가
answer += 1 if left_diagonal == n else 0 # 왼쪽 대각선
answer += 1 if right_diagonal == n else 0 # 오른쪽 대각선
# 대각선의 경우 리스트가 아니기 때문에 단순 삼항 연산자로
return answer
def solution(board, nums):
size = len(board)
ver = [0]*size
hor = [0]*size
diag = [0]*2
idx = {}
for i in range(size):
for j in range(size):
idx[board[i][j]] = (i,j)
for elem in nums:
# x == y
# x + y = n - 1
y , x = idx[elem]
if y == x: diag[0] += 1
if y == size - x - 1: diag[1] += 1
ver[x] += 1
hor[y] += 1
return hor.count(size) + ver.count(size) + diag.count(size)
728x90
'DC 2' 카테고리의 다른 글
[자료구조] 등굣길 파이썬 (DP) (0) | 2021.04.26 |
---|---|
[자료구조] 야근 수당 파이썬 (heap) (0) | 2021.04.25 |
[자료구조] 게임 아이템 파이썬 (heap, deque) (0) | 2021.04.25 |
[자료구조] 방문 길이 파이썬 (hash) (0) | 2021.04.24 |
[자료구조] FloodFill 파이썬 (BFS, queue) (0) | 2021.04.23 |
댓글