반응형

Computer science/Algorithm 46

2차원 List

안녕하세요 : ) 오늘은 2차원 List를 알아봅시다 1. 2차원 List의 구조 2차원 List는 1차원 List를 묶어놓은 리스트다. 2차원 이상의 다차원 List는 차원에 따라 Index를 선언한다. 2차원 List의 선언은 행의 개수(세로 길이), 열의 개수(가로 길이)를 필요로 한다. ex) array=[[1,2,3,4],[5,6,7,8]] 2. List 초기화 ex) arr=[0,0,0,0] arr=[0]*4#'*'연산자를 이용하여 첫줄과 같은 결과를 얻음. arr=[i for i in range(2,9) if i%2==0]#결과는 [2,4,6,8] 위의 코드는 1차원 리스트를 초기화하는 예다. 세번째줄은 반복문을 이용하여 2에서 8까지 짝수인 수만 리스트로 초기화한다. range(x,y)에서..

정렬

안녕하세요 : ) 오늘은 정렬에 대해 알아볼게요 정렬은 다수의 자료를 특정 기준에 의해 작은 값부터 큰 값(ascending) 또는 그 반대의 순서(descending)로 재배열하는 것이다. 정렬의 예는 다음과 같다. 버블정렬(Bubble Sort), 카운팅정렬(Counting Sort), 선택정렬(Selection Sort), 퀵정렬(Quick Sort), 삽입정렬(Insertion Sort), 병합정렬(Merge Sort)가 있다. 이 정렬알고리즘들을 비교하기 위해 간단하게 표로 나타내겠다. 알고리즘 평균수행시간 최악수행시간 기법 비고 버블정렬 O(n^2) O(n^2) 비교와 교환 코딩이 가장 쉬움. 카운팅정렬 O(n+k) O(n+k) 비교환 n이 비교적 작을때만 가능. 선택정렬 O(n^2) O(n^..

Greedy Algorithm(탐욕 알고리즘)

안녕하세요 : ) 오늘은 탐욕 알고리즘에 대해 알아봐요 Greedy Algorithm : 최적의 해를 구하는데 사용하는 방법. 여러 가지 경우 중 하나를 결정해야할 때마다 최적이라고 생각되는 것을 골라 최종결과를 도출해낸다. 각 선택의 시점에서 내린 결정이 최적이라고 해서 최종 결과 또한 최적이라는 보장은 성립하지 않는다. Greedy Algorithm의 과정: 1. 해 선택 : solution set(부분 해 집합)에 각 선택 시점에서 구한 최적해를 추가. 2. 실행 가능성 검사 : 새로운 solution set이 문제의 조건을 위반하지 않는지 검사하여 실행 가능성을 판단. 3. 해 검사 : 새로운 solution set이 문제의 해가 되는 지 검사한다. false이면 다시 해 선택 단계부터 시작한다.

Exhausitive Search(완전 검색)

안녕하세요 : ) 오늘은 완전 검색 알고리즘의 특징을 알아보겠습니다. Exhausitive Search : Brute-force 또는 Generate-and-Test 라고도 부른다. 모든 경우의 수를 테스트하여 결과를 도출해낸다. 일반적으로 경우의 수가 상대적으로 작을 때 유용하다. 수행속도는 느리지만 답을 찾아내지 못할 확률은 거의 없다. t="TTTTATTATTTCTAACCA" # 텍스트 p="TTATTTCT" # 패턴 N, M=18, 8 # 텍스트 길이, 패턴 길이 for i in range(N): for j in range(M): # 실패했을 경우 다시 시작점으로 간다 if t[i+j] != p[j]: break # 패턴을 찾았을 경우 if j+1 == M : # 길이가 같을 것이다 print("..

파이썬 자료형 : tuple, list, dictionary, set

안녕하세요 : ) 오늘은 파이썬의 자료형에 대해 알아보겠습니다. 자료형은 데이터를 저장할 수 있는 컨테이너입니다. 저는 자료형 중에서 tuple, list, dictionary, set을 설명하겠습니다. 기호 순서 중복 데이터 변경 예시 list [ ] O O O ex_list=[1,2,"abc"] tuple ( ) O O X ex_tuple=(1,2,3) dictionary { } X key는 중복 불가 값은 중복가능 O ex_dic={"name":"happy","age":22} set { } X X O ex_set=set("hi") ex_set=set([11,22,3]) ex_set={1,2,3,4} list는 배열과 달리 다양한 데이터들을 저장할 수 있다. tuple이 list보다 속도가 빠르다. ..

알고리즘

안녕하세요 : ) 오늘은 알고리즘의 기본적인 개념을 간단하게 정리해볼게요 알고리즘은 문제를 해결하기 위한 절차이다. 알고리즘의 표현방법은 2가지가 있다. 1. 슈도코드 : 일반적인 언어로 알고리즘을 쓴 코드. 컴퓨터에서 실행할 수 없다. 본격적으로 프로그램을 특정 언어로 작성하기 전에 알고리즘을 모델링하는데 쓰인다. 2. 순서도 : 프로그램의 진행흐름을 순서에 따라 기호나 문자로 나타낸 도표. 프로그램을 작성하기 전에 전체적인 흐름 파악을 위해 필수적으로 거치는 과정이다. 알고리즘의 성능분석은 정확성, 작업량, 메모리 사용량, 단순성, 최적성을 바탕으로 한다. 시간복잡도는 빅오표기법으로 나타낸다.

반응형