숫자 n이 하나 주어졌을 때, 처음 n개의 양의 홀수의 합을 구하는 문제를 살펴보겠습니다.
예를 들어 입력값이 7이라면, [1 + 3 + 5 + 7 + 9 + 11 + 13] = 49 이므로 출력 결과는 49가 됩니다.
문제 해결 접근 방법
이 문제는 반복문을 활용해 다음과 같은 단계로 해결할 수 있습니다.
- n이 0이면 0을 반환합니다.
- 변수를 초기화합니다: sum = 1, count = 0, temp = 1
- count가 n-1보다 작은 동안 아래 과정을 반복합니다.
- temp에 2를 더해 다음 홀수를 만듭니다.
- sum에 temp를 더합니다.
- count를 1 증가시킵니다.
- 반복이 끝나면 최종 sum 값을 반환합니다.
아래 예제 코드를 통해 더 자세히 이해해 보겠습니다.
예제 코드
class Solution:
def solve(self, n):
if n == 0:
return 0
sum = 1
count = 0
temp = 1
while(count < n-1):
temp += 2
sum += temp
count += 1
return sum
ob = Solution()
print(ob.solve(7))
입력
7
출력
49
추가로 알아두면 좋은 수학적 사실
흥미롭게도 처음 n개의 홀수의 합은 항상 n²과 같습니다. 위 예제에서도 n = 7일 때 7² = 49로 결과가 일치합니다. 따라서 반복문 없이 return n * n 한 줄만으로도 O(1) 시간 복잡도에 같은 결과를 얻을 수 있어, 성능 측면에서 훨씬 효율적인 대안이 됩니다.