no image
[알고리즘 일기] 7. 이진 탐색 구현 알고리즘
​ 이진 탐색 구현 알고리즘 이진 탐색 알고리즘은 선형 탐색 알고리즘과 달리, 정렬된 리스트를 전제로 합니다. 정렬된 리스트가 아니면 이 알고리즘은 적용이 불가능합니다. ​ ​ 주의사항 * 1회 비교를 거칠 때마다 탐색 범위가 (대략) 절반으로 줄어듭니다. ​ ​ ❧ 테스트 셋 def binary_search(element, some_list): # Code print(binary_search(2, [2, 3, 5, 7, 11])) print(binary_search(0, [2, 3, 5, 7, 11])) print(binary_search(5, [2, 3, 5, 7, 11])) print(binary_search(3, [2, 3, 5, 7, 11])) print(binary_search(11, [2, ..
2021.05.07
no image
[알고리즘 일기] 6. 선형 탐색 구현 알고리즘
​ ​ 선형 탐색 구현 알고리즘 선형 탐색이란, 리스트의 처음부터 끝까지 순서대로 하나씩 탐색을 진행하는 알고리즘입니다. ​ ​ 주의사항 * element in some_list와 같이 in 키워드를 사용하는 건 안 됩니다. ​ ​ ❧ 테스트 셋 def linear_search(element, some_list): # Code #Test print(linear_search(2, [2, 3, 5, 7, 11])) print(linear_search(0, [2, 3, 5, 7, 11])) print(linear_search(5, [2, 3, 5, 7, 11])) print(linear_search(3, [2, 3, 5, 7, 11])) print(linear_search(11, [2, 3, 5, 7, 11]..
2021.05.06
no image
[알고리즘 일기] 5. 하노이의 탑
하노이의 탑 이 게임의 목표는 왼쪽 기둥에 있는 원판들을 모두 오른쪽 기둥으로 옮기는 것입니다. 탐색을 재귀로 구현해보세요. 주의사항 * 한 번에 하나의 원판만 옮길 수 있습니다. * 큰 원판이 작은 원판 위에 있어서는 안 됩니다. ❧ 테스트 셋 def move_disk(disk_num, start_peg, end_peg): print("%d번 원판을 %d번 기둥에서 %d번 기둥으로 이동" % (disk_num, start_peg, end_peg)) def hanoi(num_disks, start_peg, end_peg): # Code # Test hanoi(3, 1, 3) - num_disks : 원판 수 - start_peg : 게임을 시작하는 기둥 번호 - end_peg : 목표로 하는 기둥 번호 ..
2021.05.05
no image
[알고리즘 일기] 4. 이진 탐색 구현 알고리즘(재귀)
이진 탐색 구현 알고리즘(재귀) 이진 탐색을 재귀로 구현해보세요. 주의사항 * 반드시 재귀(recursion)의 개념을 사용해야 합니다. ❧ 테스트 셋 def binary_search(element, some_list, start_index=0, end_index=None): # end_index's default value if end_index == None: end_index = len(some_list) - 1 # Code print(binary_search(2, [2, 3, 5, 7, 11])) print(binary_search(0, [2, 3, 5, 7, 11])) print(binary_search(5, [2, 3, 5, 7, 11])) print(binary_search(3, [2, 3,..
2021.05.04
no image
[알고리즘 일기] 3. 숫자 합, 자릿수 합
숫자 합 n번째 삼각수(triangle number)는 자연수 1부터 n까지의 합입니다. 파라미터로 정수값 n을 받고 n번째 삼각수를 리턴해주는 재귀 함수 triangle_number를 쓰세요. n은 1 이상의 자연수라고 가정합니다. 주의사항 * 함수 안에 반복문은 쓰면 안됩니다. ❧ 테스트 셋 # Return sum 1 to n def triangle_number(n): # Code # Test for i in range(1, 11): print(triangle_number(i)) ❧ 출력 예시 1 3 6 10 15 21 28 36 45 55 ❧ 정답 # Return sum 1 to n def triangle_number(n): if (n == 1): return 1 else: return n + tr..
2021.05.03
no image
[알고리즘 일기] 2. 피보나치 수열
​ 피보나치 수열 피보나치 수열이란 첫 번째 항과 두 번째 항이 1이고, 세 번째 항부터는 바로 앞의 두 항의 합으로 정의된 수열입니다. 예를 들어서 세 번째 항은 첫 번째 항(1)과 두 번째 항(1)을 더한 2이며, 네 번째 항은 두 번째 항(1)과 세 번째 항(2)을 더한 3이 될 것입니다. ​ 주의사항 * 파라미터로 1 이상의 자연수 n을 받고, n번째 피보나치 수를 리턴하는 재귀 함수 fib를 쓰세요. ​ ❧ 테스트 셋 def fib(n): # Code # Test : print fib(1) to fib(10) for i in range(1, 11): print(fib(i)) ❧ 출력 예시 1 1 2 3 5 8 13 21 34 55 ❧ 정답 def fib(n): if (n < 3): return ..
2021.05.02
no image
[알고리즘 일기 - 파이썬] 1. 팔린드롬 문제
팔린드롬 문제 [파이썬(python) 풀이] "토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 팔린드롬(palindrome)이라고 부릅니다. 문자열 word가 팔린드롬인지 확인하는 함수 is_palindrome를 쓰세요. is_palindrome은 word가 팔린드롬이면 True를, 팔린드롬이 아니면 False를 리턴합니다. 주의사항 * 반드시 for문을 사용해야 합니다. * append, insert 메소드와 del 함수를 사용하면 안됩니다. ❧ 테스트 셋 def is_palindrome(word): # Code # test print(is_palindrome("racecar")) print(is_palindrome("stars")) print(is_palindrome("토마토")) print(i..
2021.05.01