메트릭스가 주어지고, 이 메트릭스가 Toeplitz인지 확인해보는 문제.
위키 설명
메트릭스 내의 모든 diagonal element들이 서로 같은 값을 가지는 매트릭스를 말한다. 수식을 넣어서 조금 더 간단하게 설명하면 nxm matrix M_nm
에 대해서, a_{i,j} = a_{i+1,j+1} for all 1<=i<n, 1<=j<m
이 되는 매트릭스를 말한다.
풀이 방법이야 간단하다. 대각선상에 있는 원소를 비교해야하고, input이 이중배열로 들어오기 때문에 원소 하나하나를 비교하지 않고, 행과 행을 통째로 비교하는 방식을 사용했다.
정확하게, i
번째 행에 대해서 i+1
번째 행과 비교할 때 i
번째 행의 마지막 원소를 제외한 배열과 i+1
번째 행의 첫번째 원소를 제외한 값이 항상 같은 경우 주어진 메트릭스는 Toeplitz라고 할 수 있을 것이다.
(잘 이해가 되지 않는다면 정의에 의해 matrix[i][j] == matrix[i+1][j+1]
가 되야한다는 것을 떠올려보자.)
그리고 그 코드를 구현해서 제출했다.
class Solution:
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
for i in range(len(matrix)-1):
if matrix[i][:-1] != matrix[i+1][1:]:
return False
return True
디스코드봇은 한가지 트라이를 더 해보고 안된다면, DB 하나를 잡아서 사용해보려고 생각중이다.(서비스 자체를 크게 키운다면 당연히 옮겨야겠지만.. 글쌔?.. 현재 생각하는 선은 개인 프로젝트 선에서 끝나거나 많아야 지인정도만 사용하고 개선할 수 있게 만들 예정이기 때문에..) 처음에는 그대로 mongoDB를 사용할까도 생각해봤지만, 구상을 깊이 해볼수록 효율성이 떨어진다.. 만약 DB를 사용하게 된다면 mySQL같은 RDBMS를 사용하거나, 잠시 스택에 박아뒀던 CAP 이론을 공부해보고 DB를 선택해서 프로젝트를 끌고가봐야겠다.