Back to all solutions
#2038 - Remove Colored Pieces if Both Neighbors are the Same Color
Problem Description
There are n pieces arranged in a line, and each piece is colored either by 'A' or by 'B'.
You are given a string colors of length n where colors[i] is the color of the ith piece.
Alice and Bob are playing a game where they take alternating turns removing pieces from the line. In this game, Alice moves first.
- Alice is only allowed to remove a piece colored 'A' if both its neighbors are also colored 'A'. She is not allowed to remove pieces that are colored 'B'.
- Bob is only allowed to remove a piece colored 'B' if both its neighbors are also colored 'B'. He is not allowed to remove pieces that are colored 'A'.
- Alice and Bob cannot remove pieces from the edge of the line.
- If a player cannot make a move on their turn, that player loses and the other player wins.
Assuming Alice and Bob play optimally, return true if Alice wins, or return false if Bob wins.
Solution
/**
* @param {string} colors
* @return {boolean}
*/
var winnerOfGame = function(colors) {
let aliceMoves = 0;
let bobMoves = 0;
for (let i = 1; i < colors.length - 1; i++) {
if (colors[i] === 'A' && colors[i - 1] === 'A' && colors[i + 1] === 'A') {
aliceMoves++;
} else if (colors[i] === 'B' && colors[i - 1] === 'B' && colors[i + 1] === 'B') {
bobMoves++;
}
}
return aliceMoves > bobMoves;
};