Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- programmers
- 파이썬
- greedy
- 코딩테스트준비
- 장고
- Django
- 스파르타내일배움캠프TIL
- 롤
- SQL
- 탐욕알고리즘
- 라이엇
- 내일배움캠프
- 그리디알고리즘
- API
- python
- java
- 백준
- git
- sort
- 스파르타내일배움캠프
- lol
- 프로그래머스
- 코딩테스트
- drf
- 리그오브레전드
- github
- 그리디
- 자바
- 알고리즘
- Riot
Archives
- Today
- Total
Lina's Toolbox
[알고리즘] 재귀함수(Recursion Function), 팩토리얼, 파이썬 내장함수 zip() divmod() 본문
스파르타 내일 배움 캠프 AI 웹개발 과정/python
[알고리즘] 재귀함수(Recursion Function), 팩토리얼, 파이썬 내장함수 zip() divmod()
Woolina 2024. 7. 16. 20:02
재귀 함수(Recursion Function)
함수에서 자기 자신을 다시 호출해 작업을 수행하는 방식
예제. 팩토리얼
시간복잡도: O(n)
공간복잡도는 for문을 사용하는 경우가 더 낫지만,
재귀함수가 가독성이 훨씬 좋다.
# 내 코드!
def factorial(i):
if i == 0:
return 1
result = i * factorial(i-1)
return result
def solution(n):
for i in range(1, 3628800):
# while factorial(i) < n 써도됨
if factorial(i) < n:
pass
elif factorial(i) > n:
break
return i-1
def factorial(i): if i == 0: return 1 return i * solution(i-1) 로 한줄 축약도 가능
zip() 함수
마치 옷의 지퍼(zipper)처럼 두 그룹의 데이터를 서로 엮어주는 파이썬의 내장 함수
여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 튜플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환
numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for pair in zip(numbers, letters):
print(pair)
"
(1, 'A')
(2, 'B')
(3, 'C')
"
divmod()
매개변수로 두개의 숫자를 입력받아 몫과 나머지를 튜플로 반환한다.
a = divmod(10, 3)print(a) # (3, 1)
b = divmod(7, 4)print(b) # (1, 3)
c, d = *divmod(10, 3)
print(c) # 3
print(d) # 1
가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있다.
또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느리다.
대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르다.