삼각형 보드에 번호가 붙은 돌이 놓여 있을 때, 돌 하나를 놓아 이번 차례의 점수(상대 돌 제거로 얻는 점수에서 자기 돌 제거로 잃는 점수를 뺀 값)가 최대가 되도록 한다.
보통6시뮬레이션그래프구현완전 탐색아직 제출이 없습니다시간 제한2초메모리 제한512 MB새로운 보드게임 "Life Line"을 해 보자.
참가자 수는 2명 이상 9명 이하이다.
이 게임의 판은 작은 정삼각형을 여러 개 이어 붙여 만든 큰 정삼각형이다(그림 1). 작은 정삼각형의 변 길이는 모두 같다.

그림 1: 게임판
판의 크기는 바깥 삼각형의 밑변에 놓인 꼭짓점의 개수로 나타낸다. 예를 들어 그림 1의 판은 크기가 4이다.
게임을 시작할 때 각 참가자는 1 이상 9 이하의 서로 다른 식별 번호를 받고, 자신의 번호가 적힌 돌을 몇 개 받는다.
참가자는 차례대로 "빈" 꼭짓점 하나에 자기 돌을 놓는다. 빈 꼭짓점이란 돌이 놓여 있지 않은 꼭짓점이다.
참가자가 자기 차례에 돌을 놓으면 판에서 돌이 제거될 수 있다. 참가자는 제거된 다른 참가자의 돌 개수만큼 점수를 얻고, 제거된 자기 돌 개수만큼 점수를 잃는다. 한 차례의 점수는 그 차례에 얻은 점수에서 잃은 점수를 뺀 값이다.
돌이 제거되는 조건은 다음과 같다.

그림 2: 돌의 그룹
그림 2는 돌 그룹의 예이다.
지금 참가자 '4'의 차례라고 하자. 그림 3a의 꼭짓점에 돌을 놓으면 제거 조건을 만족하는 그룹이 생기고(그림 3b의 음영 부분), 다른 참가자의 돌 6개가 제거되므로 참가자는 6점을 얻는다(그림 3c).
![]() | ![]() | ![]() |
| 그림 3a | 그림 3b | 그림 3c |
다른 예로, 그림 2의 상태에서 참가자 '2'의 차례라고 하자. 그림 4a의 꼭짓점에 돌을 놓으면 제거 조건을 만족하는 그룹이 생긴다(그림 4b의 음영 부분). 다른 참가자의 돌 4개가 제거되므로 4점을 얻지만, 동시에 자기 돌 3개가 제거되므로 3점을 잃는다. 따라서 이 차례의 점수는 4 - 3 = 1이다(그림 4c).
![]() | ![]() | ![]() |
| 그림 4a | 그림 4b | 그림 4c |
모든 참가자가 자기 돌을 전부 판에 놓으면 게임이 끝난다. 참가자의 총점은 자기 차례마다 얻은 점수의 합이다.
현재 차례의 참가자가 이번 차례에 얻을 수 있는 최대 점수(얻는 점수에서 잃는 점수를 뺀 값)를 구하는 프로그램을 작성하시오.
입력은 여러 개의 데이터로 이루어져 있다. 각 데이터는 진행 중인 게임판의 상태 하나를 나타낸다.
각 데이터의 형식은 다음과 같다.
N C
S1,1
S2,1 S2,2
S3,1 S3,2 S3,3
...
SN,1 ... SN,N
N은 판의 크기이다 (3≤N≤10).
C는 지금 차례인 참가자의 식별 번호이다 (1≤C≤9). 즉, 프로그램은 이 참가자가 이번 차례에 얻는 점수를 계산해야 한다.
Si,j는 판 위 꼭짓점의 상태이다 (0≤Si,j≤9). Si,j가 양수이면 그 꼭짓점에 번호 Si,j가 적힌 돌이 놓여 있다는 뜻이고, 0이면 그 꼭짓점이 비어 있다는 뜻이다. 각 데이터의 판에는 빈 꼭짓점이 적어도 하나 있다.
한 줄에 0이 두 개 있는 줄, 즉 0 0은 입력의 끝을 나타낸다.
각 데이터마다 그 참가자가 이번 차례에 얻을 수 있는 최대 점수를 한 줄에 하나씩 출력한다.