[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