⌨️

[AtCoder]ABC-345|C - One Time Swap

2024/04/16に公開

設問ページ

提出結果

def getString():
    return input()


def main():
    s = getString()

    # 使われている文字を収集
    d = dict()
    for c in s:
        d.setdefault(c, 0)
        d[c] += 1

    # 使用数が2以上の文字があれば基準を1に(元の文字列)
    r = 1 if len([key for key, value in d.items() if value >= 2]) > 0 else 0

    # 使われている文字を数える
    k = list(d.keys())
    l = len(k)

    # 2種以上あれば組み合わせで計算
    if l >= 2:
        for i in range(l):
            for j in range(i + 1, l):
                r += (d[k[i]] * d[k[j]])

    print(r)


if __name__ == "__main__":
    main()

Discussion