이 글에서는 삼각형 형태의 성냥개비 피라미드를 만들 때 필요한 전체 성냥개비 개수를 계산하는 파이썬 프로그램을 다룹니다. 수학 공식을 활용해 반복문 없이도 간단하고 효율적으로 답을 구할 수 있습니다.
문제 정의
층의 개수를 나타내는 숫자 X가 주어졌을 때, X개의 층으로 이루어진 성냥개비 피라미드를 완성하는 데 필요한 성냥개비의 총 개수를 구하는 것이 목표입니다.
예를 들어, 삼각형 피라미드는 가장 위에 작은 삼각형 하나가 있고 그 아래로 층마다 삼각형이 늘어나는 구조입니다. 각 층을 채우는 데 필요한 성냥개비가 규칙적으로 증가하기 때문에, 등차수열의 합 공식을 응용하면 한 번의 계산으로 전체 개수를 알아낼 수 있습니다.
핵심 공식
x층짜리 삼각형 성냥개비 피라미드에 필요한 성냥개비의 총 개수는 다음 공식으로 구할 수 있습니다.
총 성냥개비 개수 = 3 × x × (x + 1) / 2
이 공식은 각 층마다 필요한 성냥개비 수(3, 6, 9, ...)를 모두 더한 결과와 같습니다. 즉, 3의 배수로 증가하는 수열의 합을 닫힌 형태(closed form)로 표현한 것입니다.
구현 예제
# 성냥개비 개수를 계산하는 함수
def numberOfSticks(x):
return (3 * x * (x + 1)) // 2
# 메인 실행 부분
n = 21
a = numberOfSticks(n)
print(a)
실행 결과
693
코드 설명
위 코드에서 numberOfSticks(x) 함수는 입력받은 층 수 x에 대해 공식 3 × x × (x + 1) / 2를 적용해 필요한 성냥개비의 총 개수를 반환합니다. 여기서는 21층 피라미드를 기준으로 계산했으며, 그 결과 693개의 성냥개비가 필요함을 확인할 수 있습니다.
정수 나눗셈 연산자 //를 사용하면 소수점 없이 정확한 정수 결과를 얻을 수 있어 별도의 형 변환이 필요하지 않습니다. 또한 함수 내 변수들은 지역 범위(local scope)에 선언되므로, 함수 외부의 변수와 충돌하지 않고 안전하게 사용할 수 있습니다.
시간 복잡도
이 방법은 단순히 공식을 한 번 계산하면 되기 때문에 시간 복잡도가 O(1)입니다. 반복문으로 층별 개수를 일일이 더하는 O(x) 방식과 비교했을 때, 층 수가 매우 커져도 즉시 결과를 얻을 수 있다는 점이 큰 장점입니다.
결론
이번 글에서는 삼각형 성냥개비 숫자(Triangular Matchstick Number) 문제를 수학 공식을 활용해 파이썬으로 해결하는 방법을 살펴보았습니다. 규칙적인 패턴을 공식화하면 반복 연산 없이도 빠르고 간결하게 문제를 풀 수 있으며, 이러한 접근 방식은 다양한 수학적 시뮬레이션 문제에도 유용하게 적용될 수 있습니다.