diff --git a/src/queue/dota2_senate/__init__.py b/src/queue/dota2_senate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/queue/dota2_senate/solution.py b/src/queue/dota2_senate/solution.py new file mode 100644 index 0000000..2fbdc5a --- /dev/null +++ b/src/queue/dota2_senate/solution.py @@ -0,0 +1,26 @@ +from collections import deque + + +class Solution: + def predictPartyVictory(self, senate: str) -> str: + radiant_queue = deque() + dire_queue = deque() + + length = len(senate) + + for i in range(length): + if senate[i] == "R": + radiant_queue.append(i) + else: + dire_queue.append(i) + + while radiant_queue and dire_queue: + radiant = radiant_queue.popleft() + dire = dire_queue.popleft() + + if radiant < dire: + radiant_queue.append(radiant + length) + else: + dire_queue.append(dire + length) + + return "Radiant" if radiant_queue else "Dire" diff --git a/tests/test_dota2_seante.py b/tests/test_dota2_seante.py new file mode 100644 index 0000000..4efdf82 --- /dev/null +++ b/tests/test_dota2_seante.py @@ -0,0 +1,11 @@ +import pytest +from src.queue.dota2_senate.solution import Solution + + +@pytest.mark.parametrize( + "senate, expected", + [("RD", "Radiant"), ("RDD", "Dire")], +) +def test_predict_party_victory(senate, expected): + solution = Solution() + assert solution.predictPartyVictory(senate) == expected