728x90
분류 전체보기
544

[Python] Sliding Window(슬라이딩 윈도우)

■ 슬라이딩 윈도우는 고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이용해 문제를 푸는 알고리즘이다. 정렬된 배열에 사용하는 투 포인터와 달리 정렬 여부와 상관 없이 사용된다. 크게 어렵지 않은 알고리즘이기때문에 바로 예제를 통해서 이해해보도록 하겠다. ■■ 다음 예제는 leetcode에서 가져왔다. 입력 : arr = [1, 3, -1, -3, 5, 3, 6, 7], k = 3 출력 : [3, 3, 5, 5, 6, 7] k 크기의 슬라이딩 윈도우를 오른쪽 끝까지 이동하면서 최댓값들을 구하는 문제이다. 진행 순서는 다음과 같다. ■■■ 그럼 바로 코드 작성을 해보자 import sys from collections import deque def slidingwindow(arr:list, k..

[Python] Bit(비트) 연산, 조작

■ Bool(부울) 연산은 크게 NOT, AND, OR, XOR이 있다. NOT 입력 출력 0 1 1 0 AND 입력1 입력2 출력 0 0 0 0 1 0 1 0 0 1 1 1 OR 입력1 입력2 출력 0 0 0 0 1 1 1 0 1 1 1 1 XOR 입력1 입력2 출력 0 0 0 0 1 1 1 0 1 1 1 0 ■■ 그렇다면 코딩에서의 비트 연산은 어떻게 표현할까? AND = & OR = | XOR = ^ NOT = ~ 간단하게 True와 False로 연산을 표현해보자. True & False = False True | False = True True ^ True = False ~ True = -2 어?! 그런데 ~ True의 출력 값이 not 1의 출력 값과 같은 0이 되어야하는 것이 아닌가? 자, 여..

[Python] Binary Search(이진 검색)

■ 이진 검색은 정렬된 배열에서 값을 찾아내는 검색 알고리즘이다. 여기서 정렬된 배열이라는 부분이 아주 굉장히 중요하다. 또한 시간 복잡도는 logn으로 일정하다. 그렇다면 이진 검색 과정을 알아보자. 위 그림을 보면 이진 검색 과정을 한번에 이해할 수 있을 것이다. ■■ 이진 검색을 코드로 구현하는 방법은 대표적으로 [재귀, 반복, 모듈 사용] 총 3가지가 있다. 어려운 알고리즘은 아니니 코드 구현으로 바로 넘어가보자. Recursion def banarysearch(a:list, target:int): def search(left, right): if left target: return search(left, mid - 1) else: return mid else: return -1 return se..

[Programmers]Python_추석 트래픽

문제 문제 설명 이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다. 입력 형식 solution 함수에 전달되는 lines 배열은 N(1 ≦ N ≦ 2,000)개의 로그 문자열로 되어 있으며, 각 로그 문자열마다 요청에 대한 응답완료시간 S와 처리시간 T가 공백으로 구분되어 있다. 응답완료시간 S는 작년 추석인 2016년 9월 15일만 포함하여 고정 길이 2016-09-15 hh:mm:ss.ss..

[Python] Sort(정렬)

정렬은 Selection Sort, Bubble Sort, Quick Sort, Insertion Sort, Shell Sort, Merge Sort ...... 등으로 겁나 많다. 하지만 난 이 중에 딱 3개(Bubble Sort, Merge Sort, Quick Sort)를 짚고 넘어갈 것이다. 버블 정렬 거두절미하고 말하면 버블 정렬은 중요하지 않다. 그냥 넘어가고는 싶지만 간단하게 설명하겠다. def bubblesort(a : list): for i in range(1, len(a)): for j in range(0, len(a) - 1): if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] 위 코드를 보면 시간복잡도가 n^2이 되는 것을 알 수 있고 굉장..

[Python] Trie(트라이)

■ 트라이는 검색 트리의 일종으로 문자열 탐색을 위한 자료구조로 널리 쓰인다. 초창기에는 '트리'로 발음했으나, 기존의 트리와 구분하기 위해 '트라이'라 부른다. 그리고 이진 트리가 아닌 다진 트리의 형태를 띤다. 위 그림과 같이 트라이가 있을 때 "appear"이라는 단어를 찾는다고 하면 a → p → p → e → a → r 순서로 문자열의 길이만큼만 탐색하면 원하는 결과를 얻을 수 있다. 트라이는 문자열을 위한 트리의 형태이기 때문에 사실상 문자 개수만큼 자식이 있어 상당히 많은 자식 노드를 갖고 있는 트리임을 확인할 수 있다. 위 그림을 봐도 그렇다고 느낄 것이다.... ■■ 트라이에서의 Leaf(리프) 노드 즉, 문자의 끝을 True, 나머지 상위 노드(문자)들은 False인 상태를 나타내며 구..

[Python] Heap(힙)

■ Heap(힙)은 트리 기반의 자료구조이다. 그리고 부모가 항상 자식보다 작은 구조이다. 그렇기때문에 루트가 가장 작은 값을 갖게되며 가장 작은 값을 추출하는 것은 루트를 추출한다는 것이 된다. 여기서 주의해야할 점은 Heap(힙)은 정렬된 구조가 아니다. 즉, 왼쪽 자식과 오른쪽 자식의 관계를 정의하지 않았다. 오직 부모, 자식 간의 관계만 정의하였다. 위 그림을 보면 오른쪽 노드가 왼쪽 노드보다 작은 것 (33, 17)이 있듯이 왼쪽과 오른쪽의 관계는 정의하지 않았다. 그리고 위 그림을 보면 자식이 두 개로 구성되어 있는데 이것을 Binary Heap(이진 힙)이라하며 트리 중 이중 트리가 많이 사용되듯이 힙도 이진 힙이 가장 많이 사용된다. 위 그림처럼 배열로 표현할 경우 대개 계산의 편이를 위해..

[Python] 이진 탐색 트리(BST)와 트리 순회

■ 이진 탐색 트리 (Binary Search Tree) 노드의 왼쪽 서브트리에는 그 노드의 값보다 작은 값들을 지닌 노드들로 이뤄져 있는 반면, 노드의 오른쪽 서브트리에는 그 노드의 값과 같거나 큰 값들을 지닌 노드들로 이루어져 있는 트리 위 그림을 보면 이진 탐색 트리가 어떻게 생겨먹은 것인지 이해할 수 있을 것이다. 대충 어떤 것인지 알았다면 이제 이 그림에서 원하는 값을 찾는 과정을 살펴볼 것이다. ■■ 위 이진 탐색 트리에서 우리는 '7'을 찾아 볼 것이다. 당연하지만 루트인 '15'부터 시작한다. 1. '7'은 '15'보다 작기 때문에 왼쪽 자식 노드로 탐색이 진행된다. 2. '10' 또한 마찬가지로 '7'이 더 작기 때문에 왼쪽 자식 노드로 탐색이 진행된다. 3. 여기서부터 '7'은 '5'보..

[Python] Tree (트리)란?

■ 트리는 하나의 뿌리에서 위로 뻗어나가는 형상처럼 생겨서 '트리(나무)'라는 명칭이 붙었는데, 트리 구조를 표현할 때는 나무의 형상과는 반대 방향으로 표현한다. 트리는 자식도 트리고 또 그 자식도 트리고 또 그.... 흔히 서브트리(Subtree)로 구성된다고 표현한다. 좀 어렵게 표현하자면 재귀로 정의된(Recursively Defined) 자기 참조(Self-Referential) 자료구조하고 할 수 있다. ■■ 자, 이제 트리의 각 명칭을 살펴보자. 우선 트리는 항상 루트(Root)에서 시작된다. 루트는 자식(Child)를 가지며 각 간선(Edge)로 연결되어 있다. 차수(Degee) 자식 노드의 개수 크기(Size) 자신을 포함한 모든 자식 노드의 개수 리프(Leaf) 자식 노드가 없는 노드 서..

'Adobe PDF'로 출력시 설정해야 할 것들

(추가) 본 글은 AutoCAD 사용을 위해서 올렸지만 그냥 PDF출력 시 설정을 궁금해하시는 분들이 많으셔서 추가로 캡쳐 사진을 올립니다. AutoCAD상에서가 아닌 'Adobe PDF'라는 프린터의 설정을 위한 경로들입니다. 설정 내용은 같으니 기본적인 경로만 있으면 될 것이라 믿습니다. 제어판>하드웨어 및 소리>장치 설정>장치>Adobe PDF>관리>인쇄 기본 설정 ■ AutoPlot 프로그램을 사용시 Adobe PDF로 출력할때 설정해야하는 것들을 Detail하게 설명하고자 따로 글을 작성하게 되었습니다. 우선 위 사진과 같이 'Adobe PDF.pc3를 선택 - 등록정보 - 사용자 특성 - Adobe PDF 설정'으로 들어갑니다. '어? 제어판 - 장치 및 프린터 - Adobe PDF - 인쇄기..

AutoCAD/PyProgram 2020.05.08
728x90