전체 글

    [1028알고리즘 10]스택 vs 큐

    스택 : Last in First out : 한쪽 끝으로만 자료를 넣고 뺼 수 있는 자료구조. 했떤 행동 순서기억할때 유리. push : 맨 위에 데이터 넣기 pop 맨위의 데이터 뽑기 peek 맨위의 데이터 보기. isEmpty 스택이 비어있는지 여부 반환. stack = [] # 빈 스택 초기화 stack.append(4) # 스택 push(4) stack.append(3) # 스택 push(3) top = stack.pop() # 스택 pop print(top) # 3! 스택구현 큐 First in First out enqueue(data) 맨 뒤에 데이터 추가. : tail 에 추가. dequeue() 맨앞에 데이터 뽑기 : head 에 서 뺌 peek() 맨앞의 데이터 보기 isEmpty()큐가..

    [1028알고리즘 09]링크드리스트 구현

    node 구현 _ data, next 링크드리스트 init _head 링크드리스트 append 링크드리스트 프린트 all 링크드리스트 get Node_index 링크드리스트 add Node index value 링크드리스트 delete Node index class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self, value): self.head = Node(value) def __len__(self): cur = self.head list_len = 1 while cur.next is not None: list_len += 1 cur = cur.next return li..

    [1028알고리즘 08]배열 vs 링크드리스트

    배열 링크드리스트특징 배열 링크드리스트 정의 같은 종류의 데이터들이 순차적으로 저장되는 자료구조 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다 특정원소 조회 원소에 즉시 접근 0부터 시작하는 인덱스 존재O(1) 리스트 특정원소 접근시 연결고리를 따라 탐색 O(N) 원소를 삽입/삭제 O(n) O(1)의 시간복잡도 앞뒤 포인터만 변경 원소 새로 추가 모든 공간 다 차면 새로운 공간 할당 모든 공간 다 차도 맨 뒤에 노드만 동적추가 특징 크기가 정해진 데이터 공간, 변경 불가,데이터 접근하는 경우가 빈번하면 Array 리스트는 크기가 정해지지 않은 데이터 공간삽입 삭제 빈번하면 LinkedList python 배열은 list 라고 부름 append 를 함 ..

    [1028알고리즘 07]최소변경횟수

    #Q. 0과 1로만 이루어진 문자열이 주어졌을 때, 이 문자열에 있는 모든 숫자를 전부 같게 만들려고 한다. 할 수 있는 행동은 문자열에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. # 예를 들어 S=0001100 일 때,전체를 뒤집으면 1110011이 된다. # 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. # 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. # 주어진 문자열을 모두 0 혹은 모두 1로 같게 만드는 최소 횟수를 반환하시오. input="01110" def fin..

    반응형