일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 직접곱
- html 독학
- python 알고리즘
- 알고리즘 공부
- Algorithm 학습
- 마이스누 스크랩
- 한글 북마크
- 공지사항 스마트하게 관리
- 모두의 알고리즘 with 파이썬
- 마이스누 공지
- 대학교 공지 관리
- Notion 대학생
- 피어튜터링
- 교내 튜터링
- 데카르트곱
- 서울대 피어튜터링
- 문서 내 이동
- 서울대 교내 프로그램
- 재귀함수
- 프로그래밍 독학
- 알고리즘 기초
- 파이썬 알고리즘
- python algorithm
- 대학생 과제 Tip
- Word 북마크
- 파이썬 독학
- 서울대 튜터링
- 서울대 공지사항
- html 기본문법
- 팩토리얼 구하기
- Today
- Total
농경제학도의 지식창고
[Python] '1부터 n까지의 합 구하기' 알고리즘 본문
본문은 <모두의 알고리즘 with 파이썬>(길벗, 2017)을 학습하고 개인 학습용으로 정리한 내용입니다.
안녕하세요, 오늘은 Python '1부터 n까지의 합 구하기' 알고리즘에 대해 알아보겠습니다.
'1부터 n까지의 합' 구하기 알고리즘을 구현하는 방법은 크게 2가지가 있습니다.
1. 1부터 n까지 오름차순으로 정직하게 하나씩 더해나가는 방식
ex. 1+2=3, 3+3=6, 6+4=10...
2. 등차수열의 합 공식 활용
(세계 3대 수학자 가우스가 초등학교 때 고안한 방식으로 널리 알려져 있죠)
본문에서는 1, 2를 실제 Python 코드로 구현해보겠습니다
#1. 하나씩 더해나가는 방식
0. 사용자가 입력한 인수를 'n'이라는 매개 변수로 받습니다
1. 함수 내에서 1~n까지의 합을 저장할 지역변수 'sum_n'의 값을 초기값 '0'으로 설정합니다
2. for문, range 함수를 활용해 (1, n+1)까지 범위를 지정하고 'i' 변수를 지정해줍니다
3. for문 안에서 'sum_n' 변수에 1~n까지 순서대로 더합니다
4. 1~n까지 더한 값이 저정되어 있는 'sum_n' 변수를 반환합니다
(1~4를 함수(sum_num)로 구현하면 아래와 같습니다)
def sum_num(n):
sum_n = 0
for i in range(1, n + 1):
sum_n = sum_n + i
return sum_n
5. 그리고 함수를 원하는 인수와 함께 호출해주고 출력하면 값이 정상적으로 출력됩니다.
print(sum_num(10)) # 1부터 10까지의 합:55 출력
#2. 등차수열의 합 공식
'등차수열의 합 공식'에 대해 간단히 설명하겠습니니다
항들간의 간격이 일정한 수열을 우리는 '등차수열'이라고 부릅니다
1부터 n항까지 수열이 존재한다고 할 때, (1, n), (2, n-1), (3, n-2), (4, n-3)...[안에 있는 숫자들은 항들의 순서를 의미합니다]
1번째 항 + n번째 항 = 2번째 항 + n-1번째 항 = 3번째 항 + n-2번째 항... = A(상수) 이 성립함을 확인할 수 있습니다
A를 절반으로 나눈 값이 바로 '등차수열의 평균'입니다
따라서, '평균(A) X 항의 개수(n) = 수열의 모든 항들의 합(S)'인 것입니다
위 내용을 '1부터 n까지의 합'에 적용해보겠습니다
1, 2, 3, 4, 5...n은 간격이 1인 등차수열로 해석할 수 있습니다
평균은 '1번째 항 + n번째 항 / 2 = (1+n)/2' and 항의 개수 = n
따라서 1부터 n까지의 합 = (n+1) * n / 2임을 확인할 수 있습니다
(다시 본론으로...)
0. 사용자가 입력한 인수를 'n'이라는 매개변수로 받은 후
1. '(n+1) * n / 2'를 반환해줍니다
def sum_num2(n):
return n * (n + 1) / 2
2. 그리고 함수를 원하는 인수와 함께 호출하고 출력하면 값이 정상적으로 출력됩니다.
print(sum_num2(10)) # 1부터 10까지의 합:55 출력
오늘은 이렇게 Python에서 '1부터 n까지의 합' 알고리즘에 대해 알아보았습니다.
다음번에 또 다른 '알고리즘에 대한 내용'으로 찾아오겠습니다.
'프로그래밍 언어 > Python 알고리즘' 카테고리의 다른 글
[Python] '최대공약수 구하기' 알고리즘 (0) | 2021.10.21 |
---|---|
[Python] '팩토리얼' 알고리즘 (0) | 2021.10.21 |
[Python] '동명이인 찾기1' 알고리즘 (3) | 2021.05.09 |
[Python] '최댓값 찾기' 알고리즘 (0) | 2021.05.01 |
[Python] '절댓값 구하기' 알고리즘 (0) | 2021.04.29 |