일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 크래프톤정글
- 프로그래머스
- 큐
- 정보처리기사
- 시스템콜
- CSS
- 모션비트
- 알고리즘
- 핀토스
- pintos
- 소켓
- userprog
- JavaScript
- defee
- 백준
- corou
- 4기
- 스택
- 리액트
- 코드트리
- 사이드프로젝트
- 자바스크립트
- Flutter
- TiL
- 자바
- 크래프톤 정글
- Java
- HTML
- 나만무
- Vue.js
- Today
- Total
목록큐 (6)
문미새 개발일지

깊이 우선 탐색(DFS, depth-first search) 깊이 우선 탐색(DFS)은 그래프의 모든 노드를 탐색하는데 사용되는 알고리즘 중 하나이다. 루트 노드에서 시작해 한 방향으로(주로 왼쪽부터) 들어갈 수 있는한 끝까지 탐색하여 더 이상 들어갈 수 없는 경우, 가장 최근의 분기점으로 돌아가 다른 방향의 노드를 탐색하는 방식으로 진행된다. DFS의 구현 // 그래프를 인접 리스트 형태로 표현 const graph = { A: ['B', 'C'], B: ['A', 'D', 'E'], C: ['A', 'F'], D: ['B'], E: ['B', 'F'], F: ['C', 'E'] }; // DFS 함수 정의 function dfs(graph, startNode) { let visited = []; //..
https://moonmisae-cdpt.tistory.com/173 스택(Stack), 큐(Queue) 스택(Stack) 스택은 프로그래밍에서 사용되는 기본적이면서도 중요한 자료구조 중 하나이며, 선형 자료구조이다. 데이터를 임시 저장하고 관리하는데 사용되며, 특히 데이터의 입력과 출력순서 moonmisae-cdpt.tistory.com https://moonmisae-cdpt.tistory.com/174 pintOS - project2(Userprog) syscall.c syscall.c 더보기 #define MSR_STAR 0xc0000081 /* 세그먼트 셀렉터 MSR, 64비트 모드로 전환할 때 사용되는 셀렉..

스택(Stack) 스택은 프로그래밍에서 사용되는 기본적이면서도 중요한 자료구조 중 하나이며, 선형 자료구조이다. 데이터를 임시 저장하고 관리하는데 사용되며, 특히 데이터의 입력과 출력순서가 후입선출(LIFO, Last In First Out) 방식으로 이루어진다. 스택의 특징 스택은 한쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형 자료 구조이다. 데이터의 추가(push)와 삭제(pop)가 같은 쪽에서 이루어지며, 가장 마지막에 들어온 데이터가 가장 먼저 나가는 구조를 가진다. 스택은 웹 브라우저의 뒤로 가기 기능, 함수 호출 시의 콜 스택 관리, 괄호 검사 , DFS(깊이 우선 탐색)등 다양한 애플리케이션에서 활용된다. 스택의 기본 연산 push() : 스택에 데이터를 추가하는 작업. 스택의 가장 위에 ..
연결리스트의 노드들을 큐를 사용해 저장하고 노드가 홀수 값이면 제거 void createQueueFromLinkedList(LinkedList *ll, Queue *q) { // 현재 노드를 가리키는 포인터를 선언 ListNode *cur; // 시작하기 전 매개변수로 받은 큐를 전부 없애기 removeAllItemsFromQueue(q); // 현재 노드에 리스트의 첫 노드를 넣기 cur = ll->head; // 현재 노드가 존재하는 동안 반복하며 while(cur != NULL) { // 큐를 삽입(enqueue에 큐와 현재 노드의 값을 인자로 보내기) enqueue(q, cur->item); // 현재 노드를 다음 노드로 변경 cur = cur->next; } } void removeOddValu..
어제에 이어서 알고리즘 문제만 하루종일 풀었다. 나무 자르기 # # 입력 : # # 나무 개수값 n, 상근이가 가져가고 싶은 길이값 m, 나무 길이들 # # 출력 : # # 절단기의 설정 값 # import sys # namu = list(map(int, sys.stdin.readline().split())) # namu_length = list(map(int, sys.stdin.readline().split())) # namu_length.sort(reverse=True) # # 자른 길이 # # 톱 높이 나무가 제일 큰게 20이면 19로 설정 # saw_height = namu_length[0] - 1 # # 톱 높이를 제일 큰 나무의 -1부터 시작해서 1씩 감소 # for saw_count in..

하노이탑 3개의 기둥이 있고 하나의 기둥에 여러 개의 원반이 있는데 각자 크기가 다 다르며 한 번에 한 개의 원반만 옮길 수 있고 크기가 큰 원반은 작은 원반 위에 올릴 수 없다. 재귀 함수를 이용한 알고리즘의 대표 문제이며 다음과 같이 동작한다 옮겨야 할 원반이 하나 뿐이라면, 해당 원반을 출발지 기둥에서 목적지 기둥으로 옮기기 그렇지 않으면 재귀함수를 사용해 가장 큰 원반을 제외한 나머지 원반들을 보조 기둥으로 옮긴다. 가장 큰 원반을 목적지 기둥으로 옮기고, 보조 기둥에 있는 원반들을 목적지로 옮긴다. # 하노이 함수(원판의 갯수, 시작봉, 중간봉, 끝봉) def hanoi(n, start, sub, finish): # 만약 원판의 개수가 1개면 끝봉으로 1번 이동하면 끝이니까 리턴값 if n ==..