문제
1부터 n까지의 정수를 사용하여 두 가지 값을 계산하세요: 먼저 정수들을 모두 더한 뒤 그 결과를 제곱합니다. 별도로 각 정수를 제곱한 뒤 그 제곱들을 모두 더합니다. 첫 번째 값에서 두 번째 값을 뺀 결과를 반환하세요.
difference_of_squares(n)을 구현하세요.
입력
n: 포함할 마지막 정수입니다.
출력
합의 제곱에서 제곱의 합을 뺀 값을 반환하세요.
제약 조건
0 ≤ n ≤ 50,000. n = 0일 때 두 합 모두 0입니다. 모든 필요한 값은 부호 있는 64비트 정수 범위에 들어갑니다.
예시
예시 1
입력:
n = 4
예상 출력:
expected = 70
입력:
long long n = 4;
예상 출력:
long long expected = 70;
입력:
long n = 4;
예상 출력:
long expected = 70;
설명
(1 + 2 + 3 + 4)² = 100. 제곱의 합은 1 + 4 + 9 + 16 = 30입니다. 빼면: 100 − 30 = 70.
예시 2
입력:
n = 1
예상 출력:
expected = 0
입력:
long long n = 1;
예상 출력:
long long expected = 0;
입력:
long n = 1;
예상 출력:
long expected = 0;
설명
두 값이 모두 1이므로, 차이는 0입니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
같은 범위를 두 가지로 요약하는 문제입니다. 하나는 합을 먼저 구하고, 다른 하나는 제곱을 먼저 합니다.
힌트 2
모든 값을 직접 돌지 말고, 정수의 합과 제곱합의 닫힌 형태 공식을 쓰세요.
힌트 3
0인 경우는 주의하세요. 두 값 모두 0이어야 합니다.
예상 복잡도
시간 O(1), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.