1771: [종합-심화][C] 숫자판 동서남북 더하기 게임
[만든사람 : 2023 박정호,박혜미,백승관,안득하,유현호,이경미,이민혁,임건웅,임수빈,임의정,임태현,한진우,황윤정]
문제 설명
8행 * 8열의 숫자판과 1부터 8까지의 숫자가 표시된 정팔면체 모양의 주사위가 있다. 주어진 숫자판과 주사위를 이용하여 게임을 진행하여 높은 점수를 획득한 참가자가 승리한다. 게임에서 점수를 획득하는 규칙을 알아보자.
참가자는 주사위를 두 번 굴려 숫자판에 있는 숫자를 변경할 수 있는 기회를 갖는다. 주사위를 두번 굴려 나온 숫자가 순서대로 A, B라고 하면 숫자판에 있는 모든 숫자 A는 B로 변경된다. 이때, 변경가능한 숫자는 주사위에 표시된 1부터 8까지이며, 0과 9는 변경할 수 없다.
이후 참가자는 주사위를 두 번 굴려 선택할 칸의 위치를 정한다. 칸의 위치는 1부터 8까지의 행번호와 열번호로 이루어져있다. 주사위의 숫자를 순서대로 C, D라고 하면 선택한 칸의 위치는 C행, D열이 된다. 칸의 위치에 따른 점수 계산 방법은 다음과 같다.
-
선택한 칸의 숫자가 0이면, 점수는 0이 된다.
-
선택한 칸의 숫자가 0이 아니면, 점수는 해당 칸의 숫자와 그 동서남북(위, 아래, 좌, 우) 칸의 숫자까지 총 5개의 숫자를 모두 더한 값이 된다.
-
선택한 칸이 숫자판의 가장자리에 있는 경우 계산 가능한 칸의 숫자만 더한다.
입력 설명
첫째줄에는 숫자판에서 변경될 숫자(A)와 변경할 숫자(B)가 순서대로 입력된다.
둘째줄에는 숫자판에서 선택한 칸의 행번호(C)와 열번호(D)가 순서대로 입력된다.
둘째줄에는 숫자판에서 선택한 칸의 행번호(C)와 열번호(D)가 순서대로 입력된다.
1 <= A, B, C, D <= 8
출력 설명
획득한 점수가 출력된다.
입력 예시 Copy
1 8
1 5
출력 예시 Copy
13
도움
숫자판의 구성은 다음 코드를 이용한다.
#define MAX 8
int A[MAX][MAX] = {
{ 0, 7, 0, 1, 2, 3, 0, 8 },
{ 1, 9, 8, 7, 0, 4, 1, 0 },
{ 2, 0, 4, 5, 3, 1, 7, 2 },
{ 7, 1, 6, 5, 0, 1, 6, 0 },
{ 0, 1, 0, 9, 7, 8, 0, 3 },
{ 3, 5, 0, 4, 0, 1, 6, 5 },
{ 9, 0, 8, 0, 9, 2, 9, 4 },
{ 0, 1, 2, 7, 5, 3, 0, 6 }
};
#define MAX 8
int A[MAX][MAX] = {
{ 0, 7, 0, 1, 2, 3, 0, 8 },
{ 1, 9, 8, 7, 0, 4, 1, 0 },
{ 2, 0, 4, 5, 3, 1, 7, 2 },
{ 7, 1, 6, 5, 0, 1, 6, 0 },
{ 0, 1, 0, 9, 7, 8, 0, 3 },
{ 3, 5, 0, 4, 0, 1, 6, 5 },
{ 9, 0, 8, 0, 9, 2, 9, 4 },
{ 0, 1, 2, 7, 5, 3, 0, 6 }
};