각 행과 열이 내림차순으로 정렬되어 있는 2D 행렬이 있다고 가정하면 주어진 대상이 그 안에 있는지 여부를 확인해야 합니다.
따라서 입력이 다음과 같으면
2 | 4 | 30 |
3 | 4 | 31 |
6 | 6 | 32 |
그리고 target =31이면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- col :=행렬의 열 크기 - 1
- 행렬 크기 범위 0에서 행렬의 i에 대해 다음을 수행합니다.
- while matrix[i, col]> target 및 col>=0, do
- col :=col - 1
- 행렬[i, col]이 대상과 같으면
- 참 반환
- while matrix[i, col]> target 및 col>=0, do
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, matrix, target): col = len(matrix[0]) - 1 for i in range(len(matrix)): while matrix[i][col] > target and col >= 0: col = col - 1 if matrix[i][col] == target: return True return False ob = Solution() matrix = [ [2, 4, 30], [3, 4, 31], [6, 6, 32] ] target = 31 print(ob.solve(matrix, target))
입력
matrix = [ [2, 4, 30], [3, 4, 31], [6, 6, 32]] target = 31
출력
True