* Computer Science/Project Euler

project euler 42. problem

soicem 2016. 9. 23. 22:54

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(0len(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