분류 전체보기
-
Anaconda : 가상환경에서 jupyter notebook 실행하기Language/Python 2021. 9. 13. 16:21
이번학기에 데이터 사이언스라는 과목을 듣게되면서 anaconda를 처음 알게됐다. 과제를 해야되는데 자꾸 import error가 나서 구글링을 해보니까 파이썬 버전이랑 pip버전이랑 안맞아서 update를 시켜줘야한다고 한다. 사실 anaconda가 뭔지도 몰랐고 해서 주피터 노트북에서 무식하게 그냥 pip install .... uninstall ... python도 삭제해봤다가..... 경로 설정도 다시 해봤다가 ..... 결국 가상환경의 개념을 이해하면서 문제를 해결했다 .ㅎㅎㅎㅎㅎ 가상환경은 한마디로 독립적인 작업환경에서 패키지 및 버전관리를 하기 위한 가상의 환경을 뜻한다. 쉽게 말하면, 파이썬같은 경우엔 버전이 빠르게 변화하는 언어라서 패키지랑 파이썬 버전이 충돌이 자주 난다. 그래서 '가상..
-
연결리스트 (2)알고리즘/이론정리 2021. 9. 9. 19:21
연결리스트는 삽입과 삭제가 유연하다는 것이 가장 큰 장점이다. (1)에서는 특정번째를 지정하여 원소를 삽입/삭제하는 연산을 구현해보았다면, (2)에서는 특정원소의 바로 다음을 지정하여 원소를 삽입/삭제하는 연산을 정의하고 구현해 볼 것이다. 그러자면, 맨 앞에 원소를 추가 (삽입) 하거나 맨 앞의 원소를 제거 (삭제) 하는 연산을 지정하기가 애매해짐 이런 경우에도 동일한 방법을 적용하기 위해서, 이번에는 연결 리스트의 맨 앞에다가 데이터 원소를 담고 있지 않은, 그냥 자리만 차지하는 노드 -dummy node 리스트를 정의하자 0번째 노드에 dummy node를 정의하자..! class Node: def __init__(self, item): self.data = item self.next = None ..
-
연결리스트 연습문제알고리즘/이론정리 2021. 9. 9. 17:07
연결리스트에 관한 삽입 삭제 순회의 함수들을 모두 구현한 것이다. 문제는 popAt()함수를 구현하는 것이었다. class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = None self.tail = None def getAt(self, pos): if pos self.nodeCount: return None i = 1 curr = self.head while i < pos: curr = curr.next i += 1 return curr def insertAt(self, pos, newN..
-
연결리스트(Linked Lists)알고리즘/이론정리 2021. 9. 8. 18:32
연결리스트 (Linked Lists) - 선형배열이 번호가 붙여진 칸에 원소들을 채워넣는 방식이라고 하면, 연결리스트는 각 원소들을 줄줄이 엮어서 관리하는 방식임 - 연결리스트는 원소들이 링크라고 불리는 고리로 연결되어 있으므로, 가운데를 끊어 하나를 삭제하거나 삽입하기가 쉬움 - 하지만 메모리 소요가 큼 추상적 자료구조 Data ex) 정수, 문자열 ,레코드 ..... A set of operations ex) 삽입 삭제 순회/ 정렬 탐색 Node - data - link(next) 리스트의 맨앞 : head 리스트의 맨끝 : tail class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def ..
-
알고리즘의 복잡도알고리즘/이론정리 2021. 9. 8. 18:31
시간 복잡도 문제의 크기와 이를 해결하는 데 걸리는 시간 사이의 관계 공간 복잡도 문제의 크기와 이를 해결하는 데 필요한 메모리 공간 사이의 관계 평균 시간 복잡도 임의의 입력 패턴을 가정했을 때 소요되는 시간의 평균 최악 시간 복잡도 가장 긴 시간을 소요하게 만드는 입력에 따라 소요되는 시간 빅오 notation 점근 표기법의 하나 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현 (알고리즘의 복잡도를 표현할 때 흔히 쓰임) o(logn): 입력의 크기의 로그에 비례하는 시간 소요 o(n) : 입력의 크기에 비례하는 시간 소요 계수는 그다지 중요하지 않음 선형시간 알고리즘 - o(n) 예 : n개의 무작위로 나열된 수에서 최댓값을 찾기위해 선형탐색 알고리즘을 적용 최댓값 - 끝까지 다 살펴보기 전까지..
-
-
-
선형 배열알고리즘 2021. 9. 8. 17:33
선형 배열 (Linear Arrays) : 리스트 활용 Python 리스트에 활용할 수 있는 연산들 1. 리스트 길이와 관계 없이 빠르게 실행 결과를 보게되는 연산들 원소 덧붙이기 .append() 원소 하나를 꺼내기 .pop() 위 연산들은 리스트의 길이와 무관하게 빠르게 실행할 수 있는 연산들이다. 리스트의 길이가 아무리 길어도 맨 끝에 요소 하나를 추가하는 것이나 맨 끝 요소 하나를 빼는건 빠르게 할 수 있는 일이다. --->o(1) 2. 반면 , 리스트의 길이에 비례해서 실행 시간이 걸리는 연산들 원소 삽입하기 .insert() 원소 삭제하기 .del() 이런 연산들은 리스트의 길이가 길면 길수록 처리가 오래 걸리게 된다. 구체적으로 말하면 리스트의 길이예 실행 시간이 비례한다. 리스트 길이가 1..