본문 바로가기

Algorithm/프로그래머스6

#5. 연결 리스트(2) 연결리스트의 요소 삽입과 삭제에 대해 설명해보고자 합니다. 연결리스트란 각 노드가 데이터와 그 다음에 올 데이터의 link를 갖고있는 데이터 구조를 말합니다. 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 def traverse(s.. 2020. 2. 24.
#4. 연결 리스트(1) 연결 리스트 연결리스트란 위의 사진처럼 각 노드가 데이터와 그 다음에 올 데이터의 link를 갖고있는 데이터 구조를 말합니다. 각각의 데이터와 링크를 갖고있는 블록을 '노드'라고 부릅니다. 노드의 가장 첫 번째를 Head라고 하고, 맨 끝 노드를 Tail이라고 하는 것이 일반적입니다. 연결 리스트 코딩 #노드 정의 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 < 1 or .. 2020. 2. 13.
#3. 알고리즘의 복잡도 알고리즘의 복잡도 시간 복잡도(time Complexity) 문제의 크기와 이를 해결하는데 걸리는 시간 사이의 관계 공간 복잡도(space) 문제의 크기와 이를 해결하는데 필요한 메모리 공간 사이의 관계 평균 시간 복잡도(Average Time Complexity) 임의의 입력 패턴을 가정했을 때 소요되는 시간의 평균 최악 시간 복잡도(Worst-case Time Complexity) 가장 긴 시간을 소요하게 만드는 입력에 따라 소요되는 시간 Big-O Notation 점근 표기법(asymptotic natation)의 하나 어떤 함수의 증가 양상을 다른 함수와의비교로 표현 (알고리즘의 복잡도를 표현할 때 흔히 쓰임) 선형 시간 알고리즘 - O(n) 무작위의 n개의 숫자 중 최댓값을 찾는 문제 최댓값 -.. 2020. 2. 13.
#2.재귀 알고리즘 재귀 알고리즘이란 재귀함수를 이용하는 것으로 재귀함수는 하나의 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 함수를 말합니다. 대표적인 예로는 자연수 n 까지의 합을 구하는 알고리즘이 있습니다. def sum(n): print(n) if n = 0: sum +=n n -=1 return sum 또 다른 예로 피보나치 순열의 해당 값을 구하는 알고리즘이 있습니다. 피보나치 순열은 아래와 같이 정의됩니다. F0 = 0 F1 = 1 Fn = Fn - 1 + Fn - 2, n >= 2 Recursive Version def solution(x): if x == 0: return 0 elif x == 1: return 1 else: return solution(x-1) + solution(x-2) ltera.. 2020. 2. 13.