9일 차 회고
- 하하하. 재밌어 알고리즘 ^^....하하하ㅏ하하하ㅏ
하하하하하.. 재밌어 알고리즘... 하나도 이해 안가고 재밌어 진짜~
뭐가 문제 인지 모르겠지만.. 강의의 진도가 안나가고 집중력이 바닥이다..
너무 답답해서 구글링에 알고리즘 잘하는 법을 찾았는데.. 다똑같은 글뿐이였다.
1. 언어를 익숙하게 익혀라.
2. 문제를 반복해서 풀어라.
일단... 0Lv 을 하루에 두개이상 풀어보기로 했다..ㅎ
모르겠다..하면 되겠지 뭐............
1~10 숫자중 8이라는 숫자를 찾기 위해 1~10의 절반 범위인 5를 기준으로
나눠 탐색 하고 5~10 절반 범위에서 다시 탐색을 한다.
- 이분탐색을 위해서는 시간복잡도가 O(lonN)만큼 걸린다.
재귀란? 어떠한 것을 정의할 때 자기 자신을 참조하는 것을 뜻한다.
- 재귀 함수? 자기자신을 호출하는 함수
def num_down(number):
if number < 0: #만약 숫자가 0보다 작으면 빠져나간다. 탈출조건
return
print(number)
num_down(number -1) #num_down 함수를 number -1 인자를 주고 다시 호출한다.
num_down(10)
1부터 ~ 정수 n 까지의 정수를 모두 곱한것
3! -> 3 x 2 x 1 = 6
def factorial(n):
if n == 1: # n 값이 1이 되면 1을 리턴해라. (탈출조건)
return 1
return n * factorial(n-1) # n에 n-1를 차례대로 곱해라.
print(factorial(10)) # 10*9*8*7*6*5*4*3*2*1
회문? 똑바로 읽으나 거꾸로 읽으나 똑같은 단어나 문장을 의미한다.
- 토마토, 기러기, 우영우, 아시아, 일요일
input = '토마토'
def is_str(string):
if len(string) <= 1:
return True
if string[0] != string[-1]:
return False
return is_str(string[1: -1])
print(is_string(input))
첫번째-두번째,두번째-세번째,세번째-네번째 를 비교하여 교환화면서 자료를 정렬하는 방식
- swap(교환) -python.ver
a,b = b,a- 시간복잡도 O(N^2)
선택해서 정렬한다.
현재 데이터의 상태와 상관없이 항상 비교하고 위치한다.
- 시간복잡도 : O(N^2)
전체에서 하나씩 올바른 위치에 '삽입' 하는 방식
필요할 때만 위치를 변경 하므로 효율적인 방식이다.
- 시간복잡도 : O(N^2) 만큼걸리지만 최선의 경우 break 문에 의해서 더 많은 원소와 비교하지 않고 탈출 할 수 있다.
배열의 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘
ㅎㅎ너무 한번에 이해하려 하지마시고 꾸준히 학습하겠다는 마음으로 접근하시면 젤 좋겠습니다