카드 배틀은 두명의 플레이어가 서로 카드를 순서대로 배치하고 자동으로 전투하는 게임이다.
이 게임의 진행 방식은 다음과 같다.
- 순서와 종류를 정해 카드들을 한 줄로 배치하여 전투를 준비한다.
- 카드에는 공격력과 생명력이 표시되어 있다.
- 준비가 끝나면 상대와 마주하여 가장 왼쪽 카드부터 서로 전투를 시킨다.
- 전투를 하면 내 카드의 공격력만큼 함께 전투한 상대 카드의 생명력이 감소하고 상대 카드의 공격력만큼 내 카드의 생명력이 감소한다.
- 생명력이 0 이하가 되면 카드는 사라진다.
- 왼쪽부터 오른쪽으로 차례대로 전투를 하고 두 사람 중 한 명이 모든 카드를 잃을 때까지 2를 반복한다.
- 플레이어 중 한쪽의 카드 갯수가 상대보다 더 많아지면, 짝이 맞지 않는 카드는 상대방의 현재 가장 오른쪽 카드와 전투한다.
- 플레이어중 한쪽이 먼저 모든 카드를 잃으면 카드가 남은 플레이어가 승리하며, 두 플레이어가 동시에 카드를 전부 잃으면 비긴다.
카드 배틀 게임의 시뮬레이터를 만들어 어떤 플레이어가 승리할지 맞춰보자.
- player1 카드의 정보는
player1_cards
에 순서대로 주어진다. - player2 카드의 정보는
player2_cards
에 순서대로 주어진다. - 카드의 정보는 [[공격력, 생명력], [공격력, 생명력] . . .]으로 주어진다.
승패가 결정되었을 때
(player1의 남은 카드들의 생명력 총합) - (player2의 남은 카드들의 생명력의 총합)을 반환하도록 solution()
함수를 작성하라.
- 카드의 개수는 1이상 8이하이다.
- 카드의 공격력과 생명력은 1이상 50이하의 정수이다.
player1_cards | player2_cards | return |
---|---|---|
[[1,1], [2,2], [3,3], [4,4], [5,5]] | [[1,1], [2,2], [3,3], [4,4], [5,5]] | 0 |
[[1,7], [5,3], [2,2], [4,50]] | [[1,1], [2,2], [3,3], [4,5], [5,5]] | 33 |
1 번 예제
전투가 모두 진행되고 두 player 모두 남은 카드가 없어 비겼기 때문에 0
을 반환한다.
2 번 예제
전투가 모두 진행되고 (player1의 남은 생명력 총합) - (player2의 남은 생명력 총합) 33
을 반환한다.