문제 › 107

107. 행렬 변환기

Hard 바이브코딩 MCPMathMatrix
문제 설명
[문제] 행렬 변환기 MCP 서버를 구현한다. 행렬을 다루는 세 가지 연산을 제공한다: 90도 회전, 나선형 순회, 2x2 역행렬. - 시계 방향 90도 회전: N×N 행렬을 시계 방향으로 90도 돌린다. 첫 행이 마지막 열이 되는 식이다. - 나선형 순회: 행렬의 바깥 테두리부터 안쪽으로, 위쪽 행을 왼->오른쪽으로, 오른쪽 열을 위->아래로, 아래쪽 행을 오른->왼쪽으로, 왼쪽 열을 아래->위로 도는 것을 반복하며 원소를 1차원 배열로 나열한다. - 2x2 역행렬: 행렬 [[a,b],[c,d]]의 역행렬은 판별식 det = a*d - b*c가 0이 아닐 때 (1/det) * [[d, -b], [-c, a]]로 구한다. 서버는 상태를 유지하지 않는다(각 호출이 독립적). [구현할 함수] - rotate_matrix(matrix: 정수 2차원 배열) -> 정수 2차원 배열 N×N 행렬을 시계 방향 90도 회전한 결과를 반환한다. - spiral_order(matrix: 정수 2차원 배열) -> 정수 배열 행렬을 나선형으로 순회한 1차원 배열을 반환한다(위->오른->아래->왼 반복). - matrix_inverse(matrix: 실수 2차원 배열) -> 실수 2차원 배열 2x2 정방행렬의 역행렬을 반환한다. 판별식이 0이면 역행렬이 없으므로 빈 결과 [[]]를 반환한다. [입력·상태] matrix는 숫자들의 2차원 배열이다. rotate_matrix·spiral_order는 정수 행렬, matrix_inverse는 실수(소수 포함) 결과를 다룬다. [제약] - rotate_matrix·spiral_order의 입력은 정사각(또는 직사각) 행렬이다. - matrix_inverse의 입력은 2x2 행렬이며, 판별식 a*d - b*c == 0이면 [[]]를 반환한다. [예시] rotate_matrix([[1, 2], [3, 4]]) -> [[3, 1], [4, 2]] spiral_order([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) -> [1, 2, 3, 6, 9, 8, 7, 4, 5] matrix_inverse([[1, 2], [3, 4]]) -> [[-2.0, 1.0], [1.5, -0.5]]
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.