쉬움 0명 해결 정답률 0%

제곱의 차이

제곱의 합을 합의 제곱에서 빼세요.

배우게 될 내용

  • 수의 합과 제곱의 합 계산하기
  • 반복문 대신 닫힌 공식 사용하기
  • 같은 답을 내는 두 방법 비교하기

문제

원문 보기 (영어)

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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.