본문 바로가기

computer science17

Implement Circular Queue using linked list Circular Queue A circular queue can be implemented using array and linked list. To implement a circular queue using a linked list, you must use a circular linked list where the rear node is connected to the front node. Complexity Time Complexity Enqueue : \(O(1)\) Dequeue: \(O(1)\) Space Complexity : \(O(n)\) as the queue is size of \(n\) Implement Circular Queue using linked list header // // C.. 2024. 4. 19.
Implement Circular Queue using array Circular Queue A circular queue is extended version of normal queue. It uses fixed-size buffer where the last element is connected to the first element. How to Implement a Circular Queue A circular queue can be implemented using two data structures Array Linked List Complexity Time Complexity Enqueue : \(O(1)\) Dequeue: \(O(1)\) Space Complexity : \(O(n)\) as the queue is size of \(n\) Implement.. 2024. 4. 19.
Doubly Linked List Doubly Linked List A doubly linked list whose nodes contain three fields data the pointer to the previous node the pointer to the next node Time complexity \(n\) : the number of nodes insert new node: \(O(1)\) append new node: \(O(1)\) delete \(i\)th node \((0 \le i \lt n)\) forward and backward : \(O(1)\) others : \(O(n)\) delete a pointer to the node that is given : \(O(1)\) find forward and b.. 2024. 4. 17.
알고있으면 좋은 아이디어 BFS ✔️ BFS에서 방문 체크의 상태가 2차원 배열인 경우 map를 사용해 해시로 상태를 관리할 경우 메모리 초과와 시간 초과이다. 해결 아이디어는 2차원 배열 상태를 문자열로 변환하여 unordered_map의 키 값으로 사용해 방문 체크를 하면 된다. 관련문제 [BOJ 1525] 퍼즐 ✔️ 방문 제한 구역(정점(\(X\), \(Y\))을 기준으로 거리 \(D\) 이하의 정점들의 영역)이 있는 경우 다익스트라 알고리즘을 응용해 방문 제한 구역을 체크할 수 있다. 아이디어는 인접한 정점까지 더 늦게 방문 할 수 있도록 거리 배열을 최신화하여 최대한 방문하지 못하는 구역을 넓히는 것이다. while (!pq.empty()) { auto [d, x, y] = pq.top(); pq.pop(); if (d.. 2023. 4. 16.
[BOJ] 16930 달리기 문제 16930번: 달리기 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 www.acmicpc.net 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1 ×1 크기의 칸으로 나누어져 있고, 칸은 빈칸 또는 벽이다. x행 y열에 있는 칸은 \((x, y)\)로 나타낸다. 매 초마다 진영이는 위, 아래, 오른쪽, 왼쪽 중에서 이동할 방향을 하나 고르고, 그 방향으로 최소 1개, 최대 K개의 빈칸을 이동한다. 시작점 \((x_1, y_1)\)과 도착점 \((x_2, y_2)\)가 주어졌을 때, 시작점에서 도착점으로 이동하는 최소.. 2023. 3. 24.
퀵소트의 시간복잡도 Time complexity of quick sort 퀵소트는 피봇을 정하는 파티션 과정과 2번의 분할 과정으로 이루어져 있다. \(n\)개의 원소를 퀵소트로 정렬하는 데 걸리는 시간을 \(T(n)\)이라 할 때 \(T(n)\)은 \(m\)개와 \(n-m\)개로 분할된 원소를 정렬하는 시간과 \(n\)개의 원소 중 피봇을 정하는 파티션 과정으로 나눌 수 있다. 아래 식을 활용해서 퀵소트의 시간복잡도를 구할 수 있다. $$T(n) = T(m) + T(n-m) + C(n) $$ Best case time complexity 퀵소트는 피봇이 항상 배열을 균등하게 분할하여 분할의 횟수가 \(\log n\)번 실행되는 경우에 \(O(n\log n)\)에 동작한다. 최선의 방법으로 퀵소트를 할 때 걸리는 시간을 \.. 2023. 1. 4.
단조 스택(Monotonic Stack) 단조 스택(Monotonic Stack) 이란 단조 스택(Monotonic Stack)은 스택(Stack) 자료 구조의 변형 중 한 개로 스택의 원소들이 단조 증가 혹은 단조 감소 상태인 스택을 말한다. 겉보기에는 힙(Heap) 자료구조와 비슷하게 보이지만 다르다. 정확하게 말하자면 단조 스택이란 스택에 원소를 삽입할 때 스택의 상태가 단조 증가 혹은 감소를 유지되는 것을 말한다. 사실 단조 스택은 자주 쓰이지는 않는다. 하지만 특정 문제에서는 단조 스택이 힘을 발휘할 때가 있다. 그중 한 개는 자신보다 처음으로 크거나 작은 원소의 값을 찾는 문제(Next Greater or Smaller Element)이다. 예를 들어 배열 [2, 1, 2, 4, 3]가 주어졌을 때 자신보다 처음으로 큰 원소를 저장하.. 2022. 11. 1.
[프로그래머스] 매출 하락 최소화 풀이 위 그림처럼 트리 구조의 형태로 이루어진 조직도가 있다. 조직도에서 임의의 노드 \(i\)와 노드 \(i\)의 자식들로 이루어진 서브 트리를 팀이라고 하자. 위의 그림에서 A, B, C, D가 팀이다. 임의의 노드 \(i\)를 팀장, 노드 \(i\)의 자식들을 팀원이라 했을 때 모든 팀에서 최소 한 명 이상 워크숍에 참석하면서, 참석하는 직원들의 하루 평균 매출액의 합을 최소로 하는 것이다. 어떤 부모 노드가 워크숍에 참석할 때 자식 노드들이 워크숍에 참석하지 않는 것이 매출액을 최소로 만들 수 있을까? 답은 아니다. 부모 노드의 평균 매출액보다 자식 노드의 평균 매출액 클 경우 반례가 만들어진다. 아래 그림이 그 반례이다. 부모 노드의 참석 여부와 상관없이 자식 노드가 워크숍에 참석했을 경우와 참.. 2022. 9. 18.