백준 2903번 바로가기

나의 풀이

논리과정

  1. 전체 점 갯수는 (각 변에 위치한 점 갯수)^2
  2. 각 변에 있는 점 갯수는 증가량이 등비수열인 계차수열
n = int(input())
dots = 2

for i in range(n):
  dots += 2**i

print(dots**2)

CODE REVIEW

위에서는 규칙에 따라 더해나갔지만, 아예 일반항을 구할 수도 있다. n번째 수열까지의 등비수열의 합은 초항이 a, 등비가 r일 때 $a(r^n-1)\over r-1$ 이므로, 문제조건을 대입하면 $2 + 1(2^n-1)\over 2-1$ = $2^n+1$ 따라서 점의 갯수는 이것을 제곱한 형태인 $(2^n+1)^2$ 로 한번에 구할 수 있다.