본문 바로가기

파이썬

(8)
힙(Heap) - 특정한 조건을 갖춘 이진트리 - 특정한 조건이란? 1) root 노드가 언제나 전체 트리 중 최댓값(max heap) 혹은 최솟값(min heap) -> 자신의 서브트리 (왼쪽이건 오른쪽이건)보다 무조건 크거나(max heap), 무조건 작다 (min heap) -> 재귀적정의 2) 완전 이진 트리 -> 0~level-1 까진 포화, level 번째 에선 포화는 아니더라도 왼쪽부터 순차적으로 데이터가 있음 3) 오른쪽 서브트리와 왼쪽 서브트리 사이의 순서는 정의되지 않았다. - 이진 탐색 트리와 달리 완전 이진 트리이지만, 노드의 자식 사이의 배치가 정해진 바 없어 이진 탐색 트리처럼 검색 기능을 제공하지 않는다. - 순회도 제공하지 않는다. [ Max Heap의 추상적 자료구조 ] 1) __init..
이진 탐색 트리 (Binary Search Trees) - 왼쪽 서브트리의 모든 값 bfs/dfs로 탐색, 찾은 노드+부모노드 함께 반환 -> 다른 함수에서 쓰..
후위 표기법 (Postfix Notation) 중위표기법 (infix notation) - 연산자가 피연산자들 사이에 위치 예) (a+b)*(c+d) 후위표기법 (postfix notation) - 연산자가 피연산자들의 뒤에 위치 예) ab+cd+* [중위 표현식을 후위 표현식으로 변경하기 (feat.스택)] a*b+c => ab*c+ a+b*c =>abc*+ //문자는 그 순서 그대로, (피연산자1)(피연산자2)(연산종류) 이 형태 유지 1) 스택에 넣기 피연산자인 경우 바로 print 연산자는 stack 에 push ->우선순위가 더 높(거나같 - 먼저나온게 우선임)은게 들어있다면(지금 넣는 것보다 먼저 해야 하니까), pop 하고나서 push ->우선순위가 더 낮은게 들어있다면, 지금 있는 것보다 위에 있어야 하므로 push 수식의 끝까지 왔을..
스택(Stack) in Python [ 스택이란? ] - 자료를 보관할 수 있는 선형 구조. 한쪽 끝에서 밀어넣고(push) 같은 쪽에서부터 뽑아쓴다.(pull) - 후입선출(LIFO - Last In, First Out) [ 스택 언더플로우 & 스택 오버플로우 ] - 스택 언더플로우(stack underflow): 비어있는 스택에서 데이터 원소를 꺼내려고 할 때 발생하는 에러 - 스택 오버플로우(stack overflow): 꽉 찬 스택에 데이터 원소를 넣으려 할 때 발생하는 에러 [ 스택의 추상적 자료구조 구현 ] 1. 구현 방법 1) 배열 이용 - Python의 리스트와 메서드를 이용하여 스택을 구현한다. 2) 연결리스트 이용 - 양방향 연결리스트를 이용하여 스택을 구현한다. 2. 연산의 정의 1) size() - 현재 스택에 들어있..
연결리스트 (Linked List) in Python 연결리스트는 말 그대로 연결된 리스트이다. 리스트(배열)자료구조에서 각 원소들이 호텔의 방에 하나씩 들어가 있었다면, 연결리스트에서 그 방들은 호텔에 갇힌것이 아닌, 독립적인 캠핑카가 된다. 그리고 서로의 꽁무늬에 'link'라는 연결고리를 달고 다니는데, 이 꼬리엔 아무것도 오지 않을 수도, 혹은 또 다른 캠핑카 한 대가 연결되어 기차같은 모양을 이룰수도 있다. [자료 구조 정의] 1. Node (캠핑카) class Node: def __init__(self,item): self.data = item #캠핑카에 탑승한 운전자 self.next = None #꽁무늬 (link 가 여기선 next) 초기화 item, next 는 각자 캠핑카에 탑승한 자료, 캠핑카의 뒤에 붙은 꽁무늬와 같다. 노드를 초기화..
파이썬 이차원 배열 선언과 동시에 초기화 할 때 유의할 점 아직 초보라 틀린 내용이 있을 수 있으니 스뭇스하게 알려주시면 감사합니다 ㅠㅠ 파이썬에서 빠르게 배열을 선언할 때, [0]*N
파이참 초보의 파이썬 디버깅 해보기 (input값 입력 받을 때) 알고리즘을 풀다 보면 디버깅을 할 때가 아주 아주 많다.(내 기준) 그런데 파이참을 접해 본 지 얼마 안 된 나에겐 사용자에게 입력받을 때, 어떤 창에서 해야 하는지, 입력을 했는데 왜 입력값이 저장되지 않고 null로 뜨는지 등 자주 헤맸던 것 같다.. 인터넷 자료도 여럿 찾아봤지만 입력값을 받는 상황에 대한 구체적인 정보에 대해선 찾을 수 없었다.. 내가 서칭력이 부족해서 그런 걸 sudo,, 마침내 오늘 디버깅할 때 Console창에 입력을 했는데도 입력값이 저장되지 않는 문제를 해결해냈다!!!!!!!! Visual Studio에서 C를 디버깅할 때와는 달리 파이참에서 파이썬을 디버깅할 땐 중단점이 꼭 필요했었다. 파이참에서 Visual Studio에서의 F10과 같은 역할을 하는 한 줄 한줄 넘어..
파이썬 소소한(?) 에러 해결기 - TypeError: 'int' object is not iterable for i in range(1,4): a = x*number(y,i) print(a) print(list(a)) print (list(a))에서 아래와 같은 에러가 났다. TypeError: 'int' object is not iterable 처음에 'iterable'이라는 말만 거슬려서 for i in range 만 뒤적뒤적,, 했는데 한 블로그에서 도움을 받았다! 블로그 글을 보고 블로그를 쓰는,,,창조경제인가 http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53 http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53 list()..