"토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 palindrome이라고 부른다. 문자열이 palindrome인지 확인하는 함수를 만들어라!
선형 탐색이란, 리스트의 처음부터 끝까지 순서대로 하나씩 탐색을 진행하는 알고리즘이다. 이 알고리즘을 사용해서 어떤 원소가 리스트 안에 포함되어 있는지 확인하려고 한다!
이진 탐색 알고리즘이란, 선형 탐색 알고리즘과 달리, 정렬된 리스트를 전제로 한다. 이 알고리즘을 사용해서 어떤 원소가 리스트 안에 포함되어 있는지 확인하려고 한다!
알고리즘의 로직을 코드로 구현할 때, 시간 복잡도를 고려한다는 것은 ‘입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?’라는 말이다.
피보나치 수열이란, 첫 번째 항과 두 번째 항이 1이고, 세 번째 항부터는 바로 앞의 두 항의 합으로 정의된 수열이다. 재귀 함수를 통해 피보나치 수열을 구현해보자.
n번째 삼각수(triangle number)는 자연수 1부터 n까지의 합이다. 재귀 함수를 이용해서 파라미터로 정수값 n을 받고 n번째 삼각수를 리턴해주는 함수를 만들어보자!
재귀 함수를 이용해서 파라미터로 정수 값을 받고 정수의 각 자릿수의 합을 리턴해 주는 함수를 만들어 보자!
재귀 함수를 이용하여 파라미터로 리스트를 받고, 뒤집힌 리스트를 리턴해 주는 함수를 만들어 보자!
하노이의 탑 게임의 목표는 왼쪽 기둥에 있는 원판들을 모두 오른쪽 기둥으로 옮기는 것이다. 재귀 함수를 이용해 이를 구현해 보자!
카드 두 뭉치가 있다. 왼쪽 뭉치에서 카드를 하나 뽑고, 오른쪽 뭉치에서 카드를 하나 뽑아서, 두 수의 곱이 가장 크게 만들고 싶다. 어떻게 하면 가장 큰 곱을 구할 수 있을까?
완전 탐색을 통해 튜플 리스트에 저장되어 있는 매장들 좌표 위치 중에서 서로 가장 가까운 두 매장을 찾아내는 알고리즘을 만들어 보자!
런던에 엄청난 폭우가 쏟아진다고 가정했을 떄, 건물과 건물 사이에 얼마 만큼의 빗물이 담길 수 있는지 구해주는 함수를 만들어 보자!
Divide and Conquer를 이용해서 1부터 n까지 더하는 함수를 만들어 보자!
합병 정렬 알고리즘 중 사용되는 merge 함수를 작성해보자!
Divide and Conquer 방식으로 merge_sort 함수를 만들어라! merge_sort 함수는 파라미터로 리스트 하나를 받고, 정렬된 새로운 리스트를 리턴한다!