Computer Science 썸네일형 리스트형 파이썬에서 시간 측정하기 알고리즘의 성능 측정은 공간/시간복잡도로 이루어지고 시간 측정은 Notation Big O와 아래의 모듈과 같이 측정할 수 있다. 많은 양의 입력이 들어오면 차이는 점진적 또는 지수적으로 커지게 된다. 문제를 해결하는데 있어서 다양한 방법이 존재하지만, 가능하면 빠른 알고리즘을 사용하는 이유는 속도 때문이다. 데코레이터를 활용 자주 사용해야할때 불러오기 편하다. # 파이썬에서 시간을 측정하기 위한 함수생성 import time from functools import wraps def check_time(function): @wraps(function) def measure(*args, **kwargs): start_time = time.time() result = function(*args, **kwar.. 더보기 [Computer Science] 자료구조 - Hash Table 해시 테이블 해싱 = 해시 맵 =해시 테이블 데이터 관리/유지 하는테이블 형태의 자료구조, 리소스를 이용하여 속도를 취함. 즉, key를 활용하여 value에 직접 접근이 가능한 구조로 정렬보다는 검색이 더 유용함. 구조 딕셔너리는 내부적으로 해시테이블 구조로 구현되여 있다. key-value형태로 저장 하나의 key는 하나의 value에 맵핑, key는 uniqueness를 보장함 # case 1 - 딕셔너리로 활용되는 해시테이블을 확인할 수 있다. test_code = {2.5: 'A' ,'2.0': 'B', '1.0': 'C'} print(test_code[2.5]) print(test_code['1.0']) print(test_code['2.0']) # case 2 - 리스트와 튜플을 활용해서 해시테이블을 확.. 더보기 [Computer Science] 자료구조 - 검색과 재귀(Searching and Recursion) 검색(Searching) 특정 노드를 추가하거나 삭제를 위해서는 검색이 우선되야 한다. 다양한 알고리즘을 활용하는 경우, 최적 알고리즘 경로를 측정하는데 쓰인다. 검색하는 컬렉션이 무작위이고 정렬되지 않은 경우, 선형검색이 기본적인 검색방법이다. linear search (선형 검색, (순차탐색)) 한 번에 하나씩 모두 검색 반복문을 활용해 배열의 변수(코드에서는 반복자 i)만큼 검색을 진행 # 선형 검색 알고리즘 # 하나의 반복문과 리스트의 인덱스, 조건문을 활용하여 특정값을 검색할 때까지 반복한다. def linear_search(arr, target): # 입력 배열 길이의 범위에서 각 idx를 반복 for idx in range(len(arr)): # 현재 idx의 항목이 비교 대상과 같은지 확인.. 더보기 [Computer Science] 자료구조 - 트리 tree, 순회 traversal 알고리즘 리스트나 스택 또는 큐로 가계도나 조직도를 구현할 수 있을까요? 선형 자료구조로 계층형 구조를 표현하기 어렵습니다. 이처럼 가계도와 같은 계층형 구조를 가진 문제를 해결하기 위한 자료구조 형태가 트리입니다. 트리 관련 용어 루트 노드(Root node) 부모가 없는 최상위 노드 단말 노드 (leaf node) 자식이 없는 최말단 노드 형제 노드 (sibling node) 부모가 같은 두 개의 노드 서브 트리 (sub tree) 자식노드이면서 부모노드역할을 하는 노드가 있는 트리 레벨 (level) 루트노드에서 얼마나 멀리 떨어져 있는지 각각 나타낸다. 루트노드의 레벨은 0이며, 아래로 내려갈때마다 1씩증가한다 크기(size) 트리에 포함된 모든 노드의 개수 깊이 (depth) 루트 노드부터의 거리 높이(.. 더보기 [Computer Science] 자료구조 - ADT(추상자료형) / linked-list/ Stack / Queue !!! ADT(Abstract Data Type) ADT는 추상적으로 필요한 기능을 나열한 일종의 명세서(로직)이다. ADT는 기본자료형(대표적으로 리스트, 숫자, 문자열)을 활용하여 사용자에 의해 구현된다. 파이썬의 리스트와 자료구조의 리스트. 파이썬은 리스트 자료형이 자료구조의 연결리스트로 기능을 지원한다. 리스트는 임의의 메모리(위치)에 자료를 동적으로 처리할 수 있다. 파이썬의 리스트는 자료구조의 배열과 연결리스트의 특징을 모두 갖고 있다. 배열의 특징 : 인덱스 사용하여 노드에 접근가능 연결리스트의 특징 : 인덱스 크기를 자유롭게 확장가능, 서로 다른 자료형을 노드로 갖을 수 있다. 즉, 파이썬이라는 프로그래밍 언어는 기존 프로그래밍에서 발생한 어려운 점을 부분적으로 개선시켰다는 것을 알 수 있다. 파.. 더보기 [Computer Science] 리팩토링과 최적화 -Refactoring, Data Optimization 리팩토링이란 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것. Refactoring의 이유 코드를 정돈하여 중복된 부분을 제거 코드를 이해하면서 내부 구조를 바꾸는것으로 명확해져서 이해가 쉬워짐 코드의 이해가 쉬워 지면서 자동으로 버그를 알게 되어 Robust한 코드를 작성 하게 도와준다 코드디자인을 향상시키며,이는 곧 디자인이 나빠지는 것을 멈추게 하며, 소프트웨어를 보다 빨리 개발 할 수 있도록 도와준다. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Refactori.. 더보기 [Computer Science] 예외처리(exception handling) - if ~else / try~except 예외 처리(exception handling) 예외란 프로그램이 정상적으로 실행될 수 없는 상황을 뜻한다. 외부 요인을 통제할 수 없다면, 프로그램 안에 예외 상황에 대한 대응책을 마련해두어야 하는것. 예외 처리의 방법 if 문 사용 코드를 실행하기 전에 예외 상황을 미리 검사. 예외 정보를 함수 밖으로 전달하기 위해 return 문과 오류 코드작성 입력값 검증이 필요하다. try 문을 사용 예외 상황을 미리 검사하지 않는다. 예외는 함수 호출과 코드 블록을 저절로 빠져나오며, 원하는 위치에서 처리. 예외 처리를 할 때는 if 문과 오류 코드를 이용하기보다는, try 문을 이용하는 것이 좋다. 미리 허락을 구하는 것보다 저지른 후에 용서를 구하는 것이 쉽다. if문으로 예외 처리 문제점 오류 코드(예외를.. 더보기 [Computer Science] 변수설계 - 지역변수와 전역변수 변수이름설정, 변수활용도에 따른 변수설계가 중요하다. 지역변수 : 해당 변수가 포함된 함수 안에서만 수정하고, 읽을 수 있다. 지역변수는 이름이 같더라도, 소속된 함수가 다르면 다른 변수로 취급 지역변수는 함수만의 것: 각 함수가 호출되어 실행될 때 만들어지고, 함수의 실행이 끝나면 모두 삭제된다. 전역변수(global variable) : 하나의 파이썬 파일전체에서 값을 읽을 수 있다. 되도록이면 함수 안에서 사이드이펙트 및 가독성을 위해 값을 수정하지 않도록 한다. 전역변수는 어디에서나 읽을 수 있지만, 함수 안에서 전역변수에 새로운 값을 대입하는 것은 금지된다. global 문을 사용하면 예외적으로 가능해진다. global 전역변수(global global variable) : 일반 전역변수와 다른.. 더보기 이전 1 2 3 4 다음