

이 문제는 n번째 도형이 몇개의 사각형으로 이루어졌는지 구해야합니다.
제가 처음으로 푼 코드는 아래와 같습니다.
def shapeArea(n):
if n == 1: return 1
shape = [i * 2 - 1 for i in range(1, n + 1)]
shape += shape[n - 2::-1]
return sum(shape)
제 방식은 n번째 도형 각층의 개수를 위층에서부터 숫자로 나타내 더해주는 방식입니다.
예를들어 n이 2라면 shape는 [1,3,5,3,1]이 되고 이를 합해 총 개수를 구합니다.
하지만 이 문제에서 파이썬 1위 코드는 다음과 같았습니다.
def shapeArea(n):
return n**2 + (n-1)**2
위 코드는 도형을 가운데층을 포함한 윗부분과 포함하지않은
아래부분으로 나눈 다음 각각의 개수를 더합니다.
윗부분의 개수는 n=1부터 순서대로 1,4,9,16 이기 때문에 n**2이고,
아래부분의 개수는 가운데층을 포함하지 않기때문에 (n-1)**2입니다
'알고리즘 > CodeSignal' 카테고리의 다른 글
| CodeSignal 8번 matrixElementsSum문제풀이 (0) | 2020.01.17 |
|---|---|
| CodeSignal 7번 almostIncreasingSequence 문제풀이 (0) | 2020.01.11 |
| CodeSignal 6번 makeArrayConsecutive2 문제풀이 (0) | 2020.01.11 |
| CodeSignal 4번 adjacentElementsProduct 문제풀이 (0) | 2020.01.10 |
| CodeSignal 1번~3번 문제풀이 (0) | 2020.01.07 |