idiot   3년 전

저의 경우 말의 모든 조합을 다 만들어보고, 말을 움직여 보았습니다.

이때 문제에서

말이 이동을 마치는 칸에 다른 말이 있으면 그 말은 고를 수 없다.
라는 조건에서, 만약 이동하려는곳에 말이 존재한다면

해당 턴을 무효화를 하고 다른 턴을 진행하는것이 아니고
해당 조합으로 진행하던 게임은 무효화 하고, 다른 조합으로 말을 움직여야 합니다.

저의 경우 모든 Move() 함수의 리턴값을 해당 조합으로 진행한 게임에서 합산 점수를 리턴 하게 시켰습니다.

말이 충돌날경우 그 게임을 무효화 한다는 의미에서 0을 리턴 시킬때는 AC를 받았고,

해당 충돌난 턴은 합산하지 않고, 그냥 계속 게임을 이어나갈때는 WA를 받았습니다.
(게임을 무효화시키지 않고, 턴을 무효화 했습니다.)

좀더 자세히 설명하자면

1번말을 1만큼 움직임, 2번말을 1만큼 움직임, 3번말을 2만큼 움직임
이라는 예시가 있을때

1번말을 1만큼 움직이고,
2번말을 1만큼 움직여 충돌이났을때

충돌이 된경우를 무시하고( 2번말을 움직이지 않고, 점수도 구하지 않음), 이어서 3번말을 움직여서 나오는 결과를 구하면 WA를 받습니다.

말이 이동을 마치는 칸에 다른 말이 있으면 그 말은 고를 수 없다.

조건을 잘 생각해보면, 모든 말들이 움직인 횟수는 반드시 10번이 되어야 합니다.

dkd7142   3년 전

이미 말이 있는곳 이라면 움직이는 횟수를 늘리지 않는 식으로 로직을 구현하하 되지않을까요 ?

idiot   3년 전

저와 풀이 로직이 다르신것 같아요.
본문 첫줄을 자세히 보시면 

"저의 경우 말의 모든 조합을 다 만들어보고, 말을 움직여 보았습니다."

라는 문구가 있습니다.

저의 경우 이동할수 있는 모든 조합을 미리 만들어보고 진행을 하는데요, 
이 조합중 하나가 이미 말이 있는곳을 이동하는 경우가 발생할시, 해당 조합자체가 무의미해지기 때문에 해당 조합 자체를 무효화 해야합니다.

james_lee   2년 전

덕분에 해결했네요

댓글을 작성하려면 로그인해야 합니다.