본문 바로가기

728x90

기타/자료구조 알고리즘

(3)
프로그래머스 스택/큐 기능개발 문제 https://programmers.co.kr/learn/courses/30/lessons/42586?language=cpp 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제 분석 input : 작업량, 작업 속도 output : 각 배포마다 몇 개의 기능이 배포되는가? 세부 조건 : 각 작업은 병렬로 처리되지만 앞에 있는 작업이 완료되지 않으면 배포될 수 없다. =>stack의 top이 완료되지 않으면 이전에 완료된 작업이 배포되지 않다가 완료되면 배포한다. 기본적으로 모든 stack의 요소에 접..
자료구조 - 스택 스택은 Linear 자료 구조로 LIFO(last in first out) 규칙을 따른다. LIFO는 가장 나중에 들어온 값이 가장 먼저 나가는 규칙이다. 스택의 메인 function으로는 Push와 pop이 있다. PUSH는 값을 추가하는 것이고 POP은 가장 나중에 들어온 값을 빼내는 규칙이다. PUSH를 수행할 때 STACK이 꽉 차있다면 OVERFLOW 오류가 발생한다. POP을 수행할 때 STACK이 비어있다면 UNDERFLOW 오류가 발생한다. 또하나의 중요한 연산으로 TOP이 있다. TOP은 가장 최근에 들어온 값에 대한 포인터이다. 이밖에도 스택이 비어있음을 확인하는 ISEMPTY함수가 있다. 해당 함수들은 모두 루프를 연산을 요구하지 않기 때문에 O(1)이다. 스택은 주로 메모리 관리, ..
원형 연결 리스트 circular linked list 삽입(insert) by c circular linked list는 singly linked list의 tail의 next 포인터 값에 head 값을 추가한 linked list이다. 포인터로는 head값만 두고 있다. 이러한 circular linked list가 정렬돼있는 상태에서 새로운 값이 삽입됐을 때는 크게 3가지 케이스가 있다. 1. 리스트가 비어있는 경우 새로운 노드를 추가하고 Head값과 new node의 next 포인터를 new node로 지정한다.(O(1)) // Case 1 of the above algo if (current == NULL) { new_node->next = new_node; *head_ref = new_node; } 2. 새로운 값이 head의 이전에 삽입되는 경우 (head 값을 꾸는 경우)..

728x90