[COS PRO 1급] 4차 문제4) 마방진 문제

아현·2023년 9월 25일
0

Algorithm

목록 보기
400/400

연습문제



마방진이란 가로, 세로, 대각선 방향의 수를 더한 값이 모두 같은 정사각형 행렬입니다. 마방진에는 1부터 정사각형 넓이까지, 수가 하나씩 배치되어야 합니다. 아래는 가로, 세로, 대각선 방향의 수를 더한 값이 모두 34인 4 x 4 마방진입니다.

4 x 4 행렬의 두 빈칸을 채워 행렬을 마방진으로 완성하려 합니다. 빈칸은 0으로 표시합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

  1. 두 빈칸의 위치를 찾습니다.

  2. 숫자 1 ~ 16 중 존재하지 않는 숫자 2개를 찾습니다.

  3. 첫 번째 빈칸에 작은 숫자를, 두 번째 빈칸에 큰 숫자를 넣어 행렬이 마방진이 되는지 검사합니다.

4-1. 마방진이라면 [작은 숫자의 행 번호, 작은 숫자의 열 번호, 작은 숫자, 큰 숫자의 행 번호, 큰 숫자의 열 번호, 큰 숫자]를 return 합니다.

4-2. 마방진이 아니라면 [큰 숫자의 행 번호, 큰 숫자의 열 번호, 큰 숫자, 작은 숫자의 행 번호, 작은 숫자의 열 번호, 작은 숫자]를 return 합니다.

4 x 4 크기 2차원 배열 matrix가 매개변수로 주어질 때, 이때 빈칸의 위치와 각 칸에 들어갈 수를 담은 배열을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작하도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.

  • 주어진 행렬은 빈칸을 채우면 반드시 마방진으로 완성할 수 있습니다.

□ 매개변수 설명

2차원 배열 matrix가 solution 함수의 매개변수로 주어집니다.
matrix는 크기가 4 x 4인 2차원 배열입니다.
matrix에는 0이 반드시 두 개 들었습니다.
matrix에는 1 이상 16 이하인 자연수 14개가 겹치지 않게 들었습니다.

□ return 값 설명

빈칸의 위치와 각 칸에 들어갈 수를 담은 배열을 return 해주세요.



profile
For the sake of someone who studies computer science

0개의 댓글