heap [백준] 13334번: 철로 h <= o 라는 조건이 없기 때문에 시작점과 도착점을 통일시켜주기 위해 h <= o 조건을 구현해줍니다. 도착점을 기준으로 오름차순 정렬을 합니다. 0부터 (n-1)까지 순회를 합니다. 최소힙에 시작점을 넣어주고, peek 값이 (현재 도착점 - d) 값보다 작은 경우 모두 pop을 해줍니다. 최소힙의 사이즈는 (현재 도착점 - d)에 포함되어 있는 철로의 개수를 의미합니다. 시간복잡도 O... heapsweepingSortkotlinSort [C] Indexed Priority Queue (Indexed Heap) a[] 라는 배열이 주어지고, heap[]으로 변환. heap[]상에 있는 a[i]에 해당하는 값을 바로 수정하고, heap 을 유지할 수 있는 자료구조. 만약 단순 heap으로 이를 구현한다면, update가 일어날때마다 n만큼 배열을 탐색해 a[i]를 수정한 뒤, 배열을 통째로 heapify를 하면 O(N) + O(N) 이 된다. 하지만 indexed heap을 통해 특정 배열값만 수정 ... heapindexed priority queueheap Leetcode - 1337. The K Weakest Rows in a Matrix 2차원 배열이 주어지고 각 row에 해당하는 배열의 1갯수가 작은 순서대로 k개만큼 출력하기, 출력하는 값은 row의 index번호. 배열을 sorting해도 되지만, 그러면 아무리해도 O(N log N)보다 성능이 좋을 수 없다(countig, radix sort등을 제외하면 가장 빠른 정렬알고리즘이 N logN이므로). 문제가 요구하는 것이 sorting된 배열에서 가장큰 값 순서대로 딱... leetcodeheappriority queueheap Leetcode - 703. Kth Largest Element in a Stream 주어진 배열에 값을 add할때마다 배열에서 k번째로 큰 값을 리턴하라. k번째 큰값이라고 해서 꼭 max heap만 사용해야하는건 아님. 이 문제에선 min heap을 써야 더 수월하게 풀림. 배열을 min heap으로 만든 뒤, heap_size를 k가 될때 까지 pop하면 heap의 0번 index에는 k번째로 큰 값이 남아있게 됨. 이 성질 이용하여 해결하면 된다. 처음에는 max he... leetcodeheapheap Heap(힙) 이진 트리 형태를 가지며 우선순위가 높은 요소가 먼저 나가기 위해 요소가 삽입, 삭제 될 때 바로 정렬되는 특징이 있다. 힙의 특징 우선순위가 높은 요소가 먼저 나가는 특징을 가진다. 루트가 가장 큰 값이 되는 최대 힙(Max heap)과 루트가 가장 작은 값이 되는 최소 힙(Min heap)이 있다. 자바스크립트에선 직접 구현해서 사용해야 한다. 힙은 추가,삭제가 핵심 로직이다. 힘 요소 ... heap자료구조heap [Swift] 힙(Heap) 구현하기 2. 정수 값을 넣는다. 3. 정수 값을 추출한다. -> 힙에서 최소 값을 꺼내는 과정 우선 Heap 클래스를 하나 생성해보자. 고로 힙을 초기화할 때 초기화할 값을 두 번 넣어주겠다. 이제 값을 넣어줄 차례인데 무조건 인덱스 1에는 가장 작은 값이 온다. 따라서 값을 넣어줄 때 자신의 부모와 비교하면서 위로 올라가는 과정이 필요하다! 이제 items에 값을 넣는 코드를 보면서 이해해보자. ... iOSheapswiftheap [BaekJoon] 1927 최소 힙 (java) 자바에서 제공하는 라이브러리인 PriorityQueue는 일반적으로 최소힙과 같은 동작을 하여서 이번 문제는 PriorityQueue를 사용하여 간단하게 풀었다. 다른 사람들의 상위권에 위치한 성능 좋은 코드들을 보니 모두들 Heap구조를 직접 구현한 것을 확인할 수 있었다. 이를 보면 PriorityQueue자체가 메모리와 시간과 같은 성능 측면에서는 직접 구현한 코드들 보다 좋지는 않은것... heap알고리즘 문제풀이baekjoonbaekjoon [백준] 11279번 - 최대 힙 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어... heap백준heap 백준 2696번: 중앙값 구하기 최대 힙, 최소 힙 하나씩 준비한다. 1. 최대 힙에 원소 하나를 push한다. 2. 그 다음 원소부터는 최대 힙의 top에 위치한 원소보다 큰 경우는 최소 힙에 push하고, 아니면 최대 힙에 push한다. 3. 두개의 원소가 삽입된 후 최소 힙의 원소의 개수가 최대 힙의 원소의 개수보다 1개 많아질 때까지 각 힙에서 pop, push한다. 4. 최소 힙의 top에 있는 원소를 출력한다. ... heapcppPriorityQueuepsPriorityQueue <Programmers> Heap_disk controller c++ 문제는 위와같이 한 번에 하나의 작업만 수행할 수 있는 하드디스크에 작업이 들어왔을 때, 요청부터 종료까지 걸린 시간이 평균을 가장 줄이는 방법으로 처리하는 평균을 구하는 문제이다. 1. 작업 시간이 제일 작은 것부터 나오는 min heap을 구현 priority_queue를 구현할 때 제일 첫 번째 인자는 queue에 담길 자료형, 두 번째 인자는 vector<vector< int>> 컨테... queueprogrammersalgorithmheapPriorityQueuePriorityQueue [Java] Programmers 디스크 컨트롤러 (PriorityQueue) 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. jobs의 길이는 1 이상 500 이하입니다. jobs의 각 행은 하나의 작업에 대한 [작업이 요청되는 시점, 작업의 소요시간]... programmersalgorithmheapalgorithm [Java] Programmers 이중우선순위큐 (PriorityQueue) 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 큐에 주어진 숫자를 삽입합니다. 큐에서 최댓값을 삭제합니다. 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. operations의... programmersalgorithmheapalgorithm 211118. Today I Learned(TIL) : 자료구조 / 알고리즘 / Heap / 프로그래머스 3단계 디스크 컨트롤러 이 때 각 작업의 요청부터 종료까지 걸린 시간의 평균은 10ms(= (3 + 11 + 16) / 3)가 됩니다. 이렇게 A → C → B의 순서로 처리하면 각 작업의 요청부터 종료까지 걸린 시간의 평균은 9ms(= (3 + 7 + 17) / 3)가 됩니다. 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지... TIL알고리즘heapTIL [BOJ] 백준 11286번 절댓값 힙 (Python) 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 ... 백준bojpythondata structurealgorithmheap코딩테스트algorithm
[백준] 13334번: 철로 h <= o 라는 조건이 없기 때문에 시작점과 도착점을 통일시켜주기 위해 h <= o 조건을 구현해줍니다. 도착점을 기준으로 오름차순 정렬을 합니다. 0부터 (n-1)까지 순회를 합니다. 최소힙에 시작점을 넣어주고, peek 값이 (현재 도착점 - d) 값보다 작은 경우 모두 pop을 해줍니다. 최소힙의 사이즈는 (현재 도착점 - d)에 포함되어 있는 철로의 개수를 의미합니다. 시간복잡도 O... heapsweepingSortkotlinSort [C] Indexed Priority Queue (Indexed Heap) a[] 라는 배열이 주어지고, heap[]으로 변환. heap[]상에 있는 a[i]에 해당하는 값을 바로 수정하고, heap 을 유지할 수 있는 자료구조. 만약 단순 heap으로 이를 구현한다면, update가 일어날때마다 n만큼 배열을 탐색해 a[i]를 수정한 뒤, 배열을 통째로 heapify를 하면 O(N) + O(N) 이 된다. 하지만 indexed heap을 통해 특정 배열값만 수정 ... heapindexed priority queueheap Leetcode - 1337. The K Weakest Rows in a Matrix 2차원 배열이 주어지고 각 row에 해당하는 배열의 1갯수가 작은 순서대로 k개만큼 출력하기, 출력하는 값은 row의 index번호. 배열을 sorting해도 되지만, 그러면 아무리해도 O(N log N)보다 성능이 좋을 수 없다(countig, radix sort등을 제외하면 가장 빠른 정렬알고리즘이 N logN이므로). 문제가 요구하는 것이 sorting된 배열에서 가장큰 값 순서대로 딱... leetcodeheappriority queueheap Leetcode - 703. Kth Largest Element in a Stream 주어진 배열에 값을 add할때마다 배열에서 k번째로 큰 값을 리턴하라. k번째 큰값이라고 해서 꼭 max heap만 사용해야하는건 아님. 이 문제에선 min heap을 써야 더 수월하게 풀림. 배열을 min heap으로 만든 뒤, heap_size를 k가 될때 까지 pop하면 heap의 0번 index에는 k번째로 큰 값이 남아있게 됨. 이 성질 이용하여 해결하면 된다. 처음에는 max he... leetcodeheapheap Heap(힙) 이진 트리 형태를 가지며 우선순위가 높은 요소가 먼저 나가기 위해 요소가 삽입, 삭제 될 때 바로 정렬되는 특징이 있다. 힙의 특징 우선순위가 높은 요소가 먼저 나가는 특징을 가진다. 루트가 가장 큰 값이 되는 최대 힙(Max heap)과 루트가 가장 작은 값이 되는 최소 힙(Min heap)이 있다. 자바스크립트에선 직접 구현해서 사용해야 한다. 힙은 추가,삭제가 핵심 로직이다. 힘 요소 ... heap자료구조heap [Swift] 힙(Heap) 구현하기 2. 정수 값을 넣는다. 3. 정수 값을 추출한다. -> 힙에서 최소 값을 꺼내는 과정 우선 Heap 클래스를 하나 생성해보자. 고로 힙을 초기화할 때 초기화할 값을 두 번 넣어주겠다. 이제 값을 넣어줄 차례인데 무조건 인덱스 1에는 가장 작은 값이 온다. 따라서 값을 넣어줄 때 자신의 부모와 비교하면서 위로 올라가는 과정이 필요하다! 이제 items에 값을 넣는 코드를 보면서 이해해보자. ... iOSheapswiftheap [BaekJoon] 1927 최소 힙 (java) 자바에서 제공하는 라이브러리인 PriorityQueue는 일반적으로 최소힙과 같은 동작을 하여서 이번 문제는 PriorityQueue를 사용하여 간단하게 풀었다. 다른 사람들의 상위권에 위치한 성능 좋은 코드들을 보니 모두들 Heap구조를 직접 구현한 것을 확인할 수 있었다. 이를 보면 PriorityQueue자체가 메모리와 시간과 같은 성능 측면에서는 직접 구현한 코드들 보다 좋지는 않은것... heap알고리즘 문제풀이baekjoonbaekjoon [백준] 11279번 - 최대 힙 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어... heap백준heap 백준 2696번: 중앙값 구하기 최대 힙, 최소 힙 하나씩 준비한다. 1. 최대 힙에 원소 하나를 push한다. 2. 그 다음 원소부터는 최대 힙의 top에 위치한 원소보다 큰 경우는 최소 힙에 push하고, 아니면 최대 힙에 push한다. 3. 두개의 원소가 삽입된 후 최소 힙의 원소의 개수가 최대 힙의 원소의 개수보다 1개 많아질 때까지 각 힙에서 pop, push한다. 4. 최소 힙의 top에 있는 원소를 출력한다. ... heapcppPriorityQueuepsPriorityQueue <Programmers> Heap_disk controller c++ 문제는 위와같이 한 번에 하나의 작업만 수행할 수 있는 하드디스크에 작업이 들어왔을 때, 요청부터 종료까지 걸린 시간이 평균을 가장 줄이는 방법으로 처리하는 평균을 구하는 문제이다. 1. 작업 시간이 제일 작은 것부터 나오는 min heap을 구현 priority_queue를 구현할 때 제일 첫 번째 인자는 queue에 담길 자료형, 두 번째 인자는 vector<vector< int>> 컨테... queueprogrammersalgorithmheapPriorityQueuePriorityQueue [Java] Programmers 디스크 컨트롤러 (PriorityQueue) 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. jobs의 길이는 1 이상 500 이하입니다. jobs의 각 행은 하나의 작업에 대한 [작업이 요청되는 시점, 작업의 소요시간]... programmersalgorithmheapalgorithm [Java] Programmers 이중우선순위큐 (PriorityQueue) 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 큐에 주어진 숫자를 삽입합니다. 큐에서 최댓값을 삭제합니다. 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. operations의... programmersalgorithmheapalgorithm 211118. Today I Learned(TIL) : 자료구조 / 알고리즘 / Heap / 프로그래머스 3단계 디스크 컨트롤러 이 때 각 작업의 요청부터 종료까지 걸린 시간의 평균은 10ms(= (3 + 11 + 16) / 3)가 됩니다. 이렇게 A → C → B의 순서로 처리하면 각 작업의 요청부터 종료까지 걸린 시간의 평균은 9ms(= (3 + 7 + 17) / 3)가 됩니다. 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지... TIL알고리즘heapTIL [BOJ] 백준 11286번 절댓값 힙 (Python) 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 ... 백준bojpythondata structurealgorithmheap코딩테스트algorithm