오늘은 다음과 같은 예제를 알아보고자 한다.
39. 이진 탐색 구현하기
40. 재귀 함수 사용 예제
41. 튜플과 집합 사용하기
오늘도 곧바로 시작해보자.
39. 이진 탐색 구현하기
{code}
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, x)
if result != -1:
print(f"{x}은 배열의 {result}번째 인덱스에 있습니다.")
else:
print(f"{x}는 배열에 존재하지 않습니다.")
[결과: 배열 = [2, 3, 4, 10, 40] / 찾는값 = 10]

설명:
이진 탐색은 정렬된 리스트에서 원하는 값을 효율적으로 찾는 알고리즘으로 주어진 값을 찾을 때까지 리스트를 계속 반으로 나누어 탐색하는 방식으로 동작한다.
binary_search 함수는 정렬된 배열 arr와 원하는 값을 받는다. 이때 low, high 그리고 mid라는 변수를 사용해 배열의 범위를 조절하며 탐색을 진행하게된다.
mid는 현재 확인하고 있는 위치를 나타냅니다. 탐색하는 값 x가 현재의 mid 값보다 크면, x는 mid의 오른쪽에 있을 가능성이 있고, 반대로 작으면 왼쪽에 있을 가능성이 높다.
해당 알고리즘은 원하는 값을 찾을 때까지 배열을 반으로 계속 나누어 탐색하는 방식으로 동작한다.
40. 재귀 함수 사용 예제
{code}
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
num = 5
print(f"{num}의 팩토리얼은 {factorial(num)}입니다.")
[결과: 5!]

설명:
재귀 함수는 함수 내부에서 자기 자신을 다시 호출하는 함수를 의미한다.
우리는 가장 흔한 예제로 "팩토리얼 계산"을 해볼 것이다.
예제는 숫자 5를 입력할 경우, 5의 팩토리얼 (5 x 4 x 3 x 2 x 1 = 120) 출력한다.
factorial 함수는 "값이 1이 될때까지 계속 -1을 하며, 자신을 호출"하여 팩토리얼을 계산을 진행한다.
41. 튜플과 집합 사용하기
{code}
# 튜플 예제
tuple_example = (1, 2, 3, 4)
print(tuple_example)
# 집합 예제
set_example = {1, 2, 2, 2, 3, 4}
print(set_example) # 출력: {1, 2, 3, 4}
[결과]

설명:
튜플은 "변경할 수 없는 리스트와 같은 자료 구조"이며, 집합은 "중복을 허용하지 않는 자료 구조"이다.
튜플은 괄호 ()를 사용하여 정의하며, 값의 변경이 불가능하다.
집합은 중괄호 {}를 사용하여 정의하며, 중복된 값을 저장하지 않는다.
다음 시간에는 정규표현식을 사용하여 "이메일의 유효성을 검사" 하는 예제 부터 알아보자.