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가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.