n번째 삼각수는 tn = ½ n (n + 1) 이라는 식으로 구할 수 있는데, 처음 10개는 아래와 같습니다.
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다. 예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다.
이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.
약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다. 이 중에서 삼각단어는 모두 몇 개입니까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | def sumAlphabet(target): Sum = 0 for i in range(0, len(target)): Sum += (ord(target[i])-64) return Sum def triangleVal(Sum): n = 1 while True: tmp = (n*(n+1)) / 2 if tmp == Sum: return True elif tmp > Sum: return False n+=1 result = 0 for list in open("words.txt", "rb").read().split(","): if(triangleVal(sumAlphabet(list[1:len(list)-1]))): result +=1 print "result is %d" % result | cs |
C:\Users\soicem\Desktop\연습용 폴더>python test.py
result is 162
'* Computer Science > Project Euler' 카테고리의 다른 글
project euler 43. problem (0) | 2016.10.05 |
---|---|
Permutation (0) | 2016.09.30 |
project euler 40. problem (0) | 2016.09.22 |
project euler 39. problem (0) | 2016.09.20 |
project euler 38. problem (0) | 2016.09.06 |