Algorithm/Data Structure

    [자료구조] 우선순위 큐 remove, poll 메서드에 대해

    프로그래머스 문제를 풀다가 알게된 사실을 기록해봤다. 기본적으로 우선순위 큐에서 poll과 remove 메서드는 poll() : 우선순위가 가장 높은 값 반환 후 제거, 큐가 비어있을때는 null을 리턴 remove() : 우선순위가 가장 높은 값 반환 후 제거, 비어있으면 예외(NoSuchElementException)발생 로 알고있다. 큐가 비어있을 때 poll()을 객체로 사용하면 NPE(Null Pointer Exception)이 발생한다. => 객체로 사용하지않고 그냥 메서드로 사용하면 ex) a.poll(); NPE는 발생X remove메서드는 remove()와 remove(Object o)가 있는데 , remove()는 AbstractQueue 추상 클래스의 remove 메서드를 사용하는 것..

    [Java] int 형(Primitive type)배열을 List로 + 내림차순( Stream 사용)

    배열의 원소가 int와 같은 primitive type(원시 타입)인 경우 오름차순 정렬만 가능합니다. => Arrays.sort(arr명, reverseOrder()) => 내림차순 정렬메소드 사용불가능 오름차순 정렬메소드 Arrays.sort(arr명); 그렇다면 어떻게 원시 타입 배열을 내림차순 정렬 할 수 있을까? 방법은 여러가지지만(원시 타입 배열을 참조 타입 배열로 변환), 여기서는 List로 변환 후 내림차순 해보겠습니다. 그리고 Java 8 이후부터는 Stream을 사용할 수 있는데, 아래와 같이 변환 가능합니다. int형(원시 타입) 배열을 Integer(참조 타입)형 List로 변환코드 List 리스트명 = Arrays.stream(int형 배열명) .boxed() .collect(Co..

    [Java] 자바의 데이터 타입(primitive type, reference type)

    자바의 변수의 데이터 타입은 primitive type과 reference type으로 나뉘는데, primitive type(원시 타입)과 reference type(참조 타입)에 대해 알아보자. 원시 타입(primitive type) primitive type(원시 타입은) 언어에서 사전 정의 되어 있는 데이터 타입으로, 쉽게 말해, 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입이다. 참조 타입(reference type) reference type(참조 타입)은 객체(Object)의 번지를 참조(주소를 저장!!)하는 타입으로 메모리 번지 값을 통해 객체를 참조하는 타입이다. (call by reference) 원시 타입을 제외한 타입들(문자열, 배열, 열거, 클래스, 인터페이스..

    [Python] 힙 자료구조 / 힙큐(heapq)

    파이썬 힙 자료구조 파이썬 heapq 모듈은 heapq (priority queue) 알고리즘을 제공한다. 모든 부모 노드는 그의 자식 노드보다 값이 작거나 큰 이진트리(binary tree) 구조인데, 내부적으로는 인덱스 0에서 시작해 k번째 원소가 항상 자식 원소들(2k+1, 2k+2) 보다 작거나 같은 최소 힙의 형태로 정렬된다. heapq는 내장 모듈로 별도의 설치 작업 없이 바로 사용할 수 있다. 힙 함수 활용하기 heapq.heappush(heap, item) : item을 heap에 추가 heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨. heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 변..

    Python Deque(Double-Ended Queue) + Stack, Queue 간단개념

    deque() 는 스택과 큐의 기능을 모두 가진 객체로 출입구를 양쪽에 가지고 있음. 메서드에 따라 스택처럼 써도되고, 큐처럼 써도된다. 여기서 잠깐 스택과 큐에 대해 간단히 알아보자. 1. 스택 구현 : append(), pop() 스택(stack)이란 쌓아 올린다는 것을 의미 '가장 마지막에 삽입된 자료가 가장 먼저 삭제된다'라는 구조적 특징을 가짐(후입선출(LIFO, Last-In-First-Out) 구조) top으로 정한 곳을 통해서만 접근가능(삽입, 삭제 모두) 입력시에는 append() 메서드를 이용하고, 출력시에는 pop()을 이용 2. 큐 구현 : appendleft(), pop(), append(), popleft() Queue의 사전적 의미는 줄을 서서 기다리는 것을 의미 따라서 은행에..