IT강의/알고리즘 16

연결 리스트의 종류

이번 시간에는 연결 리스트의 종류를 살펴보겠습니다. 연걸 리스트는 각 노드가 한 줄로 연결되어 있는 구조이지만 종류마다 차이가 있습니다. (1) 단순 연결 리스트 (Linked List) - 연결선의 방향이 단방향이고 맨 마지막 노드가 NULL 값을 가리킵니다. - 장점 - 구현하기 쉽고 구조도 간단합니다. - 단점 - 이전 노드에 접근할 수 없으므로 접근성이 떨어집니다. - 맨 마지막 노드가 NULL 값을 가리키므로 NULL 포인터 에러가 발생할 수 있습니다. (2) 원형 연결 리스트 (Circular Linked List) - 연결선의 방향이 단방향이고 맨 마지막 노드가 맨 처음 노드를 가리킵니다. 따라서 연결된 형태가 원형이 되므로 '원형' 이라고 부르는 것입니다. - 장점 - 구현하기 쉽고 구조도..

스택과 큐의 차이

이번 시간에는 스택과 큐의 차이를 살펴보겠습니다. 스택과 큐 모두 데이터들의 나열 구조이지만 차이가 있습니다. 스택 (Stack) - "밥 먹고 구토한다 ㅡㅡ;" - 가장 나중에 들어온 것이 먼저 나가는 데이터 나열 구조입니다. 즉 LIFO(Last-In-First-Out) 방식을 사용합니다. - 데이터를 삽입하는 과정을 Push 라고 하고 제거하는 과정을 Pop 이라고 합니다. 큐 (Queue) - "밥 먹고 ㄸ 싼다 ㅋㅋ" - 가장 먼저 들어온 것이 먼저 나가는 데이터 나열 구조입니다. 즉 FIFO(First-In-First-Out) 방식을 사용합니다. - 데이터를 삽입하는 과정을 Enqueue 라고 하고 제거하는 과정을 Dequeue 라고 합니다.

다익스트라 알고리즘 (1) - 동작 원리

이번 시간에는 다익스트라 알고리즘의 동작 원리를 살펴보겠습니다. 다익스트라 알고리즘(Dijkstra Algorithm) - "둘러보면서 작은 값으로 바꾸자" - 그래프의 출발점에서부터 각각 최단 경로를 찾는 알고리즘 입니다. - 가장 좋아보이는 것부터 찾아가므로 그리디 알고리즘에 해당합니다. 위의 그래프에 데이크스트라 알고리즘을 적용할 것입니다. 초반에는 노드 값(S에서 *까지의 거리)을 모두 ∞로 둡니다. 우선 시작점인 S에 포커스를 둡니다 포커스에서부터 주위를 둘러보면서 값을 비교할 것입니다. 만약 '포커스된 노드 값 + 간선 값' 이 '발견된 노드 값' 보다 더 작으면 더 작은 값(더한 값)으로 대체합니다. 위의 사진의 경우 아래와 같습니다. 포커스된 노드 (S) : 0 간선 (S-e) : 4 발견..

크루스칼 알고리즘 (1) - 동작 원리

이번 시간에는 크루스칼 알고리즘의 동작 원리를 살펴보겠습니다. 크루스칼 알고리즘(Kruskal Algorithm) - "가장 작은 값부터 잇자" - 간선 비용이 가장 적은 것부터 이어나가되 사이클이 형성되지 않게 하는 최단 경로 알고리즘 입니다. 가장 좋은 것부터 찾아나가므로 그리디 알고리즘에 해당합니다. 위의 그래프를 비용이 가장 적은 것부터 차례대로 이어나갈 것입니다. 비용이 가장 적은 1을 잇습니다 그 다음으로 적은 2를 잇습니다 그 다음으로 적은 3을 잇습니다 그 다음으로 적은 4를 잇습니다. 같은 비용인 간선이 2개 있을 때는 왼쪽 상단에 있는 것부터 잇도록 하겠습니다. (오른쪽에서부터 이어도 상관 없습니다) 두 번째 4를 잇습니다 그 다음으로 적은 5를 이었으나 사이클이 형성되므로 제외합니다 ..

DFS와 BFS의 차이

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 DFS와 BFS의 원리를 살펴보고 비교해보겠습니다. 위의 그래프를 가지고 설명하겠습니다. DFS (깊이 우선 탐색, Depth First Search) - "막힐 때까지 나아간다" 라고 이해하시면 됩니다. - 막힐 때까지 계속 접근하다가 막히면(접근할 노드가 더 이상 없으면) 한 발짝만 되돌아간 후 접근하지 않은 노드로 접근합니다. BFS (너비 우선 탐색, Breadth First Search) - "주위를 둘러본다" 라고 이해하시면 됩니다. - 주위를 둘러보다가 더 이상 없으면 한..

2018년도 정보처리기사 실기 2회 문제풀이 및 해설 - 1. 순서도

※ 문제의 내용은 제 기억에 의해 복구된 것이므로 기존 시험문제랑 완전히 똑같지는 않습니다. 그냥 참고용으로만 봐주시기 바랍니다. 다음은 배열 내에 숫자를 아래의 그림과 같이 역S자 방향으로 채우는 프로그램입니다. 빈 칸 (1) ~ (5)를채우시오. 난이도: ★★☆☆☆ 문제의 난이도는 정보처리기능사 알고리즘 수준입니다. 정보처리기능사를 따셨다면 쉽게 풀 수 있는 문제입니다. 무엇보다도 프로그램 전체를 보고 전체적인 흐름을 이해하는 것이 중요합니다. (1) 배열 내에 모든 숫자를 채워넣으려면 ARR(x,y) 에서 x 랑 y 값이 모두 때마다 변경되어야 합니다. 괄호 3번 부분[ ARR( I, (3) ) = N ]을 보면 변수 I가 x로 세팅되어있는데 변수 I 값를 변경해주는 명령문이 없습니다. 때가 되었을..

728x90
반응형
LIST