[혼공파] # 5. 함수

문연수·2023년 1월 16일
0

혼공파

목록 보기
5/8

1. 함수 만들기

- 1. 함수 작성하기

* f(x)=2x+1f(x) = 2x + 1

def f(x):
	return 2 * x + 1

print(f(10))

* f(x)=x2+2x+1f(x) = x^2 + 2x + 1

def f(x):
	return x ** 2 + 2 * x + 1    
   
print(f(10))

- 2. 빈칸 채우기

def mul(*values):
	result = 1
	for value in values:
    	result *= value
        
	return result
    
print(mul(5, 7, 9, 10))

- 3. 오류가 발생하는 코드 찾기

def function(*values, valueA, valueB):
	pass

function(1, 2, 3, 4, 5)

TypeError: function() missing 2 required keyword-only arguments: 'valueA' and 'valueB'

2. 함수의 활용

- 1. 패밀리 레스토랑

min = 2
max = 10
person = 100

memo = dict()

def table(remain, current):
	key = str([remain, current])
	if (key in memo):
		return memo[key]
	
	if (remain < 0):
		return 0
	
	if (remain == 0):
		return 1

	total = 0
	for case in range(current, max + 1):
		total += table(remain - case, case)
	
	memo[key] = total

	return total

print(table(person, min))

3. 함수 고급

- 1. 빈칸 채우기 1

numbers = [1, 2, 3, 4, 5, 6]
print("::".join(str(number) for number in numbers))

- 2. 빈칸 채우기 2

numbers = list(range(1, 10 + 1))

print("# 홀수만 추출하기")
print(list(filter(lambda number: number % 2 == 1, numbers)))
print()

print("# 3 이상, 7 미만 추출하기")
print(list(filter(lambda number: number >= 3 and number < 7, numbers)))
print()

print("# 제곱해서 50 미만 추출하기")
print(list(filter(lambda number: number ** 2 < 50, numbers)))

4. 도전 문제

num_of_disc = 3

print(f"원판의 개수 {num_of_disc}")

def hanoi(disc, start, end, between):
	if (disc < 1):
		return 0
	
	if (disc == 1):
		print(f"{start} -> {end}")
		return 1

	value = hanoi(disc - 1, start, between, end)
	print(f"{start} -> {end}")
	value += hanoi(disc - 1, between, end, start)

	return value + 1

print("이동 횟수: ", hanoi(num_of_disc, 'A', 'C', 'B'))
profile
2000.11.30

0개의 댓글