C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM 586: TeamsSelection

問題文

交互に最も preference が高い選手を選んでいく。

public class TeamsSelection {
    public string simulate(int[] preference1, int[] preference2)
    {
        int n = preference1.Length;
        var result = Enumerable.Repeat(' ', n).ToArray();
        
        for (int i = 0; i < n; i++)
        {
            var preference = (i % 2 == 0) ? preference1 : preference2;
            int target = preference.Where(p => result[p - 1] == ' ').First();
            result[target - 1] = (char)('1' + (i % 2));
        }

        return new string(result);
    }
}