• このエントリーをはてなブックマークに追加

TopCoder

スポンサードリンク

問題

int型配列が与えられる。 2個の数値の位置を入れ替える場合、得られるユニークな数列が何通りあるか.

方針

全通り swapしてみて、ユニークな数列の数を数える.

回答

class TheSwapsDivTwo:
    def find(self, sequence):
        s = set()
        n = len(sequence)
        
        for i in range(n - 1):
            for j in range(i + 1, n):
                l = list(sequence)
                l[i], l[j] = l[j], l[i]
                s.add(tuple(l))
                
        return len(s)