hotspot μΌλ‘ νλ‘νμΌλ§ λλ¦°λ€ μ€κ° μΈλ°μμ΄λ³΄μ΄λ μ½λλ€ λ§κ΅¬λ§κ΅¬ μμ . κ°μ₯ λ³λͺ©μ§μ μ Anagram.register,
~cpp WordElement
(μ§κΈμ input κ°―μ n μ λν΄ n λ² μ€ν)λμ€μ Psyco bind νκ³ λμλ 4.4 μ΄.
P3 933, 128 RAM Win98 Python2.2 + Psyco μμ λλ¦Ό.
~cpp import os import time import psyco class Formatter: def __init__(self, anAnagramTable, out=os.sys.stdout): for key in anAnagramTable.iterkeys(): out.write(' '.join(anAnagramTable[key]) + "\n") class Anagram: def __init__(self): self.anagrams={} def read(self, anIn=os.sys.stdin): for word in anIn: self.register(word.strip()) def getAnagrams(self): return self.anagrams def register(self, aWord): aw=''.join(WordElement(aWord)) if self.anagrams.has_key(aw): self.anagrams[aw].append(aWord) else: self.anagrams[aw]=[aWord] def WordElement(aWord): result=list(aWord) result.sort() return result psyco.bind(WordElement) psyco.bind(Anagram) psyco.bind(Formatter) if __name__=="__main__": start=time.clock() anagram=Anagram() anagram.read() end=time.clock() Formatter(anagram.getAnagrams()) print "time : ", end-start