[Python] 코딩 도장 - 합의 제곱과 제곱의 합

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 합의 제곱과 제곱의 합] - Lv.1

안녕하세요. ‘프로젝트 오일러’에서 문제를 가져왔습니다.

1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).

1^2 + 2^2 + … + 10^2 = 385

1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).

(1 + 2 + … + 10)^2 = 55^2 = 3025

따라서 1부터 10까지 자연수에 대해 “합의 제곱”과 “제곱의 합” 의 차이는 3025 - 385 = 2640 이 됩니다.

그러면 1부터 100까지 자연수에 대해 “합의 제곱”과 “제곱의 합”의 차이는 얼마입니까?

출처: https://codingdojang.com/scode/553?answer_mode=hide


[풀이]

sum_of_square = sum( i**2 for i in range(1,101) )
square_of_sum = sum( i for i in range(1,101) ) ** 2
square_of_sum - sum_of_square
25164150

한 줄 for문을 2개 사용해서 각각 “제곱의 합”과 “합의 제곱”을 구하였다.


[추천 풀이]

print(abs(sum(range(1, 101))**2 - sum(x**2 for x in range(1, 101))))
25164150

다른 분이 푸신 풀이 중 추천 수가 많은 풀이이다.

range()에 바로 sum()을 적용할 수 있는지 몰랐는데 덕분에 알게 되었다.

Leave a comment