본문 바로가기

전체 보기

(223)
머지소트,스택,큐,연결리스트 merge sort 구현, merge sort 스택프레임 ( 노트) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 스택, 큐 ADT : abstract data type 추상자료형 ->자료 구조의 인터페이스(함수 시그니처를) (오퍼레이션)을 명시해놓은것 -> 기능명세 요약)어떤 자료구조의 함수 사용법 ->구체적인 구현 설명이 들어가면 안된다! 기능과 구현의 구분 : 추상화! 존재하는 자료구조를 가지고 어떤 자료구조를 만들떄 ( 어댑터 패턴 이라고 한다) 1.배열, 2연결리스트 3 파이썬의 리스트 -> 연결리스트로 구현 STACK - LIFO 후입선출, 선입후출 후위표기법 계산기 미로찾기 이 두가지가, 자료구조 공부를 했는가 안했는가의 판단 기준 STACK의 ADT S.empty() -> Boolea..
오늘배운거 깊게 def insertion_sort(li): n=len(li) # for i in range(1,n): # temp=li[i] # for j in range(i-1,-2,-1): # if li[j]>temp: # li[i]=li[j] # li[j+1] =temp for i in range(1,n): temp=li[i] for j in range(i-1,-2,-1): if j == -1: break if li[j]>temp: li[j+1]=li[j] else: break li[j+1]=temp​ def get_middle_idx(li,start,mid,end): """ 리스트의 맨처음 값과 중간 값, 마지막값중에서 가운데 값이 위치한 인덱스를 반환한다. """ idx_li=[start,mid,end] if ..
네트워크, 퀵소트, isertion, selection 목차 ㅡ네트워크 ㅡ퀵소트 random pivot , O(nlogn) - 다른알고리즘은 최악을 고려하는데 퀵소트는 평균 ㅡ insertion, selection sort ㅡ merge sort 이후 ㅡ연결리스트 (배열과 연결리스트의 차이) 스택,큐(스택2개로 큐 구현하기), Tree(순회-전위,중위-스택계열,후위 레벨순서-큐 계열) nat : ip 라우팅 TCP/IP 4계층 application 1.htpp 2http 3ftp 4smtp 5dns http: 메시지기반 프로토콜 ->''문자열''이다 쓰고 주고받고 Translate( 포트, 전송계층) 특정 process INTERNET (IP ROUNTING) 특정 호스트 --------ARP(IP - > MAC) NETWORK INTERFACE(ETHERN..
하노이타워 def hanoi(n, _from, _by, _to): #base case if n==1: print(f'{n}번째 쟁반을 {_from}에서 {_to}로 이동 ') return hanoi(n-1, _from, _to, _by) print(f'{n}번째 쟁반을 {_from}에서 {_to}로 이동 ') hanoi(n-1, _by, _from ,_to) hanoi(3,a,b,c)를 입력했다고 치자 이 함수는 기저조건 n==1을 못맞춰서 프린트하지 않고 아래로 내려갈것이고 hanoi(2,a,c,b) print(2번째를 a -> c) hanoi(2, b,a,c)를 만들것이다 만들어는 두는데, 재귀 호출에 의해 hanoi(2,a,c,b)를 실행할 것이고 이는 이프문을 지나 hanoi(1,a,b,c) print(2번..
클래스, 버블소트 , 네트워크 목차 1oop는 키워드랑 클래스 사용법만 하겠다. 2하노이타워 3버블소트 O(n) 4네트워크 5자료구조 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ OOP 1-캡슐화(encapsulation):정보 은닉 2-정보은닉(information hiding): 3☆-다형성-polymorphism: 상속(inheritance)을 쓸때 사용 -> 메서드 오버라이딩(method overrding) vs 함수 오버로딩 fuction overoding (두개 햇갈리면 안됨) 4-디자인 패턴(SOLID) 필요성을 느끼고 구현한다면 GOF(gang of four)라는 책에서 나옴 S:single resposibility principle (단일책임이라고 번역하는데 원문이 더이해간다) ..
프로세스/스레드 CONTEXT SWITCHING 프로그램: 이미지 한개. 프로세스:메모리에 올라와, 실행을 시작한 프로그램 preemptive 때문에 multitasking이 된다. 1)piority alogorithm 2) round-robin algorithm(정해진 시간동안) wating과 blocked의 차이 : 언제든 작업이 가능한가? I/O작업이 끝날때까지 불가능한가 context switching : cpu 레지스터의 저장되어 있는 값들( 새치기가 일어날떄 새치기 당하는 데이터들을 pcb로 업데이트 하는것) 어쩔수 없지만 자주하면 성능이 안좋아지고, 안하게 되면 멀티스레드 R-R 타임슬라이스가 지날때마다 시스템 부하 -> 타임슬라이스 길게 잡으면 멀티테스킹이 아니고, 적게 잡으면 자주 발생해서 시스템부하 프로세스는 실행흐름, 실행흐름이란 ..
프로세스VS스레드 binary search O(n) 빅오 개념 -> 자바스크립트로 포팅 자료구조는 그림으로 시작해서 그림으로 끝난다 compiler vs interpreter컴파일러 언어 / 인터 프리터 정의적 차이 process/ thredad (multithreading) ,race conditon , mutual exclution(상호배제) 아마오늘? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 절차지향 , OOP Network 알고리즘,자료구조 앞으로 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 1교시 linear search t(n) = n binary search의 t(n) = log(2)n 1/2씩 비교해야될 데이터가 줄어들고, (1/2)^k =1 ㅡㅡㅡ..
O(빅오) , 메모리계층 linear search의 t(n)이 = n이 되는 이유는 각각 비교하기 때문에. binary search의 t(n)이 되는 이유는, 한번 줄어들때마다 1/2씩 감소하므로 (1/2)^k * n = 1 log2^2^-k = log2 n^-1 k * log2^2 =log 2*n k= log2n 오메가() lower-bound (하한선) 세타() opper-bound + lower-bound 빅오() upper -bound 0(1) :상수시간 연결리스트의 삽입,삭제 배열의 indexing arr[2] O(log n) :로그시간 bst O(n) : 선형시간 연결리스트의 탐색, 어떤 배열의 삽입,삭제 -> comparison sorting 아무리 좋아도 비교정렬중에 이보다 좋을수는없다 O(n log n) : 선형..