TopCoder SRM 148 DIV 1 Easy 練習
問題
トランプの山から隣あった数の和が13になるものとKのカードを取り除いていく。最後に何枚のカードが残るか。
解
山の一番最後と一番最初でもペアが作れることに注意する。
using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public class CircleGame { private int toInt(char c) { string T = " A23456789TJQK"; return T.IndexOf(c); } public int cardsLeft(string deck) { while (true) { bool remove = false; for (int i = 0; i < deck.Length; ++i) { if (deck[i] == 'K') { deck = deck.Remove(i, 1); remove = true; break; } else if (toInt(deck[i]) + toInt(deck[(i + 1) % deck.Length]) == 13) { int di = Math.Max(i, (i+1)%deck.Length), dj = Math.Min(i, (i+1)%deck.Length); deck = deck.Remove(di, 1); deck = deck.Remove(dj, 1); remove = true; break; } } if (!remove) break; } return deck.Length; } }