본문 바로가기
카테고리 없음

[백준/BOJ] 14929 귀찮아 (파이썬 Python)

by 제이리즘 2024. 11. 15.

https://www.acmicpc.net/problem/14929

 

직관적인 수학 능력을 요구하는 문제이다.

 

각 요소별 중복되지 않은 두 개의 값을 곱한 뒤 다 더하는 것인데,

 

어렵진 않지만 단순히 조합으로 풀면 시간초과가 난다. 

 

결국 (AB + BC + AC) 형태의 값을 구하면 되므로 수학적 개념을 살짝 응용해 풀어낼 수 있다.

 

$$ (a+b)^2 = a^2 + 2ab + b^2 $$

 

를 응용하면, ((a+b)^2 - (a^2+b^2)) / 2 = ab 가 되므로​ 

 

(합의 제곱 - 제곱의 합) / 2 로 결과를 도출할 수 있다. 

 

import sys
input = sys.stdin.readline

def main():
  N = int(input())
  arr = list(map(int, input().split()))
  val1 = sum(arr)**2
  total = 0
  for i in arr:
    total += i**2
  
  print((val1-total)//2)



if __name__ == '__main__':
  main()