안녕하세요.
오늘도 여전히 한자리수의 문제 풀이에 대한 포스팅을 진행하고 있네요.
꾸준히 해야지하면서도 아직까지 6번이라니, 정말 게으르다라는 느낌만 드네요. 아무튼 조금 더 꾸준히 포스팅을 하기로 마음먹으며, Project Euler 6번 문제 풀이를 포스팅해보도록 하겠습니다.
위의 예제로 나온 것은 1~10까지의 제곱의 합과 합의 제곱 간의 차이를 구하는 문제입니다. 기존과 비슷하게 1~10은 예제에 대한 답으로 다 주어지고 난 이후에 이번엔 1~100까지의 제곱의 합과 합의 제곱 간의 차를 구하라고 하네요.
사실 이 문제에 대해서는 단순하게 생각하면 되는 부분이기에 초기 세팅이라던지, 알고리즘이라든지 이런 것을 언급할 필요도 없는 문제인 것 같습니다.
a=list()
b=list()
for i in range(1,101,1) :
a.append(i)
b.append(i*i)
sum_sq=sum(a[:])*sum(a[:])
sq_sum=sum(b[:])
print(sum_sq-sq_sum)
위에 코드에서는 sum_sq라는 것은 모두 더해서 제곱하는 과정을 말하며, sq_sum은 반대의 과정을 말합니다. 그래서 두가지의 변수에 대한 차를 구해주면, 정답을 쉽게 구할 수 있는 문제입니다.
다만, 위의 코드의 문제점은 sum_sq와 sq_sum에서 상대적으로 크기의 우위에 있는 변수가 어디있는지 모른다는 것입니다. 그래서 추가적으로 구성한다면, if문을써서 "sum_sq"가 더 크면 "sum_sq-sq_sum"이라는 것으로 Print를 해주는 것이나 반대의 경우를 잘 생각해서 결론을 정수로 도출을 하거나 아니면 파이썬의 내장함수인 abs를 사용하여 절대값 기호를 해주는 것이 중요하다고 생각합니다.
이 문제는 사실상 단순하기에 쉽게 풀이하셨을 것이라고 생각합니다.
'Program > Python(Project Euler)' 카테고리의 다른 글
Python :: Project Euler 5 문제 풀이 (0) | 2018.05.09 |
---|---|
Python :: Project Euler 4번 문제 풀이 (0) | 2018.05.08 |
Python :: Project Euler 3번 문제 (코딩 문제 풀이) (0) | 2018.03.12 |
프로젝트 오일러(Project Euler #2) (0) | 2017.09.28 |
코딩 문제 사이트 (Project Euler) (2) | 2017.08.27 |
댓글