Algorithm/Project Euler

프로젝트 오일러 28번

할루루 2017. 7. 4. 16:54

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
arr=[]
number=1
sum=0
for i in range(1,502):
    arr_temp=[]
    count=((i*2-1)-1)*4
    if(count==0):
        count=1
    for j in range(0,count):
        arr_temp.append(number)
        number=number+1
    arr.append(arr_temp)
for i in range(1,502):
    matrix=i*2-1
    if(matrix==1):
        sum=sum+1
        continue
    index1=matrix-2
    index2=index1+matrix-1
    index3=index2+matrix-1
    index4=index3+matrix-1
    sum=sum+arr[i-1][index1]
    sum=sum+arr[i-1][index2]
    sum=sum+arr[i-1][index3]
    sum=sum+arr[i-1][index4]
print(sum)
#반환 시간 : 0.2s
cs




문제 자체는 배열을 활용해서 값을 넣고 풀어야할 것처럼 생겼는데


귀찮아서 (사실 잘 모르겠어서)


변수를 어찌어찌 잘 조작해서 풀었다.



노트에 경우들을 좀 적어놓고 생각해보니


인덱스는 네 개 뿐이고 그 차이 또한 등차수열의 관계가 있는 등


수학적인 관계가 많이 보여서


이를 잘 활용해 보았다.



이 코드를 다음에 보고 설명해보라고 하면 잘 못할 것 같다.