TIL 221110 회고

young0_0·2022년 11월 10일
0

TIL

목록 보기
9/91

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 문에 의해서 더 많은 원소와 비교하지 않고 탈출 할 수 있다.

병합 정렬

배열의 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘

profile
열심히 즐기자ㅏㅏㅏㅏㅏㅏㅏ😎

1개의 댓글

comment-user-thumbnail
2022년 11월 11일

ㅎㅎ너무 한번에 이해하려 하지마시고 꾸준히 학습하겠다는 마음으로 접근하시면 젤 좋겠습니다

답글 달기