ABC137 C - Green Bin
備忘録
問題
回答
import sys import os def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") N = int(sys.stdin.readline().rstrip()) lines = ["".join(sorted(line.rstrip())) for line in sys.stdin.readlines()] ret = 0 sortedlines = {} for n in range(N): item = lines[n] if item in sortedlines: sortedlines[item] += 1 ret += sortedlines[item] else: sortedlines[item] = 0 print(ret) if __name__ == '__main__': main()
考え方
アナグラムで文字列が一致するということは、使用している文字と文字の数が同一ということなので、
文字列S
をすべてソートしたリスト(lines
)を作る。
次に、lines
を頭から順に取り出した文字列をkey
、一致した文字列の数をvalue
としたdict型
オブジェクトを作る。
後はソートした文字列が一致した場合(dict型
オブジェクトのkey
に文字列S
が存在している場合)
一致している文字列の数(value
)を加算していくことで、回答が得られる。