m x n 차수의 이진 행렬이 있다고 가정하면 행렬에서 특수 위치의 수를 찾아야 합니다. 위치 (i,j)는 mat[i,j] =1이고 i행과 j열의 다른 모든 요소가 0일 때 특별한 위치입니다.
따라서 입력이 다음과 같으면
1 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
그러면 출력은 3이 됩니다. 여기서 특수 위치는 (0, 0), (1,2) 및 (3,1)입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
특수 :=0
-
행렬의 행 수까지 범위 0에 있는 i에 대해
-
행 행렬[i]의 1의 개수가 1이면
-
numOfOne :=0
-
indexOfOne :=행렬[i]에서 1의 위치
-
범위 0에서 행렬의 열 크기까지의 j에 대해
-
행렬[j, indexOfOne]이 1과 같으면
-
numOfOne :=numOfOne + 1
-
-
numOfOne> 1이면
-
루프에서 나오다
-
-
-
numOfOne이 1과 같으면
-
특수 :=특수 + 1
-
-
-
-
특별 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(matrix): special = 0 for i in range(len(matrix)): if matrix[i].count(1) == 1: numOfOne = 0 indexOfOne = matrix[i].index(1) for j in range(len(matrix)): if matrix[j][indexOfOne] == 1: numOfOne += 1 if numOfOne > 1: break if numOfOne == 1: special += 1 return special matrix = [[1,0,0,0,0], [0,0,1,0,0], [0,0,0,1,1], [0,1,0,0,0]] print(solve(matrix))
입력
[[1,0,0,0,0], [0,0,1,0,0], [0,0,0,1,1], [0,1,0,0,0]]
출력
3