Programming Test/알고리즘22 [알고리즘 공부] 그래프 알고리즘 그래프 알고리즘 오늘은 그래프 알고리즘에 대해 알아보도록 하겠습니다 (이번에는 간단히 이론만 하고 다음부터는 문제풀이 위주로 글을 작성하도록 하겠습니다). 이전 DFS/BFS와 최단 경로에서 배운 내용은 그래프 알고리즘의 유형으로 볼 수 있습니다. 이외에도 그래프 알고리즘은 다양한 유형이 있지만 코딩 테스트에서 출제 비중이 낮다고 하네요! 하지만 꼭 제대로 알고 넘어가야하는 알고리즘이라고 합니다. 이번에도 에 따라서 앞서 배운 내용들을 기반으로 하는 데, 크루스칼 알고리즘(Kruskal Algorithms)은 그리디 알고리즘으로 분류디고 위상 정렬 알고리즘(Topology Algorithms)은 앞서 배운 큐 자료 구조 혹은 스택 자료 구조를 활용해야 구현할 수 있습니다. 그럼 그래프 알고리즘에 대해서 .. 2024. 3. 20. [알고리즘 공부] 최단 경로 최단 경로 (Shortest Path) 이번 말씀드릴 알고리즘은 '최단 경로'에 대해서 알아보도록 하겠습니다. 최단 경로는 말 그대로 가장 짧은 경로를 찾는 알고리즘입니다. 그리고 위 알고리즘은 다음과 같은 상황에 주로 사용됩니다. 예시 한 지점에서 다른 특정 지점가지의 최단 경로를 구해야 하는 경우 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우 최단 경로 문제는 보통 그래프로 표현하는데 각 지점은 그래프에서 '노드'로 표현되고 지점간 연결된 도로는 그래프에서 '간선'으로 표현됩니다. 또한 실제 코딩 테스트에서 최단 경로를 모두 출력하는 문제보다는 단순히 최단 거리를 출력하도록 요구하는 문제가 많이 출제된다고 알려져 있습니다. 오늘도 참고서인 에 따라서 최단 거리 알고리즘의 종류.. 2024. 3. 15. [알고리즘 공부] 다이나믹 프로그램 다이나믹 프로그래밍 (Dynamic Programming) 이번에는 다이나믹 프로그래밍에 대해서 알아보도록 하겠습니다. 최적의 해를 구하기에 시간이 매우 필요하거나 메모리 공간이 매우 많이 필요한 문제 등이 컴퓨터로 해결하기 어려운 문제입니다. 연산 속도의 한계와 메모리 공간을 사용할 수 있는 데이터의 개수도 한정적이라는 점이 많은 제약을 발생시키 때문입니다. 따라서 연산 속도 및 메모리를 최대한 활용할 수 있도록 알고리즘을 작성해야 하는 데, 메모리 공간을 약간 더 사용하면서 연산 속도를 비약적으로 증가 시킬 때, 사용하는 방식이 다이나믹 프로그래밍입니다. 이번 글에서는 다이나믹 프로그래밍의 고전적인 예제 중 하나인 '피보나치 수열'을 계산하는 코드를 통해서 살펴보도록 하겠습니다. 먼저, 피보나치 수열.. 2024. 3. 14. [알고리즘 공부] 이진 탐색 이진 탐색 (Binary Search) 이번에도 내용을 바탕으로 "이진 탐색" 알고리즘에 대해서 알아보도록 하겠습니다. 먼저 이진 탐색은 정렬된 배열에서 특정 요소의 위치를 효율적으로 찾는 검색 알고리즘입니다. 기본 원리는 대상 값을 중앙 값과 비교하여 탐색 범위를 반으로 줄여나가는 것입니다. 일단은 이진 탐색을 본격적으로 알기 이전에 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 순차 탐색(Sequential Search)과 코드를 비교하면서 살펴보도록 하겠습니다. 순차 탐색은 말 그대로 순차로 데이터를 탐색한다는 의미입니다. 리스트 안에 데이터를 하나씩 방문하면서 특정한 문자열과 같은지 검사하므로 구현에 있어서도 비교적 쉬운 편입니다. 순차 탐색에 대한 간단.. 2024. 3. 14. [알고리즘 공부] 정렬 정렬(Sorting) 이번에는 이전 탐색 알고리즘에 이어서 내용을 바탕으로 "정렬" 알고리즘에 대해 알아보도록 하겠습니다. 우선 정렬(Sorting)이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 의미합니다. 프로그램에서 데이터를 가공할 때 오름 차순 혹은 내림차순 등 다양한 방식으로 정렬해서 사용하는 경우가 있기 때문에 이 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘 중 하나라고 명시되어 있습니다. 그리고 정렬 알고리즘으로 데이터를 정렬하면 다음에 배울 이진 탐색(Binary Search)가 가능해진다고 하네요! 그리고 정렬 알고리즘은 대표적으로 선택, 삽입, 퀵 그리고 계수 정렬 등의 종류가 있는 데, 일단 책의 내용에 따라 이번에는 4개의 정렬 알고리즘에 대한 간단한 설명.. 2024. 3. 13. [알고리즘 공부] DFS/BFS 탐색 알고리즘 DFS/BFS 오늘은 지난 구현에 이어서 의 내용을 바탕으로 DFS/BFS에 대해 알아보도록 하겠습니다. 우선 두 알고리즘은 그래프 또는 트리를 탐색하기 위한 기본적인 알고리즘으로서 이 둘을 알기 이전에 스택과 큐 그리고 재귀 함수를 알아야합니다. 일단 이번에는 DFS 그리고 BFS에 대해 간단히 알고 스택과 큐 그리고 재귀함수에 대한 코드를 살펴보도록 하겠습니다. DFS (Depth-First Search, 깊이 우선 탐색) 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘. 스택(또는 재귀 함수)을 사용하여 구현할 수 있다. 모든 가능한 경로를 탐색하고 싶을 때 유용하며 미로 탐색, 백트래킹 문제 등에 적합 BFS (Breadth-First Search, 너비 우선 탐색) 그래프의 가까.. 2024. 3. 12. [알고리즘 공부] 구현 구현 (Implementation) 에서 제공하는 공부 방법에 따라서 이번에는 "구현"에 대해서 살펴보도록 하겠습니다. 먼저 "구현"이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정'이라고 정의되어 있습니다. 이 유형의 문제들은 일반적으로 알고리즘과 자료구조의 복잡한 이론보다는 문제의 조건을 코드로 어떻게 표현할지에 더 초점을 맞추고 있습니다. 즉, 이 유형을 풀기 위해서는 문제를 해결하기 위한 아이디어를 코드로 변환하는 과정에서 세심함과 정확성이 중요합니다. 구현 문제의 유형 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차근차근 직접 수행하는 경우. 예를 들어, 특정 규칙에 따라 문제를 변환하거나, 보드 게임의 규칙을 시뮬레이션하는 등의 문제가 이에 해당 완전 탐색 : 가능한 모든 경우의 .. 2024. 3. 11. [알고리즘 공부] 그리디(Greedy) Greedy 알고리즘 풀이 2024년 상반기 공고가 시작되었습니다. 그간 작년 12월부터 2월 말까지 대외 활동을 하느니라, 미뤄왔던 코딩 테스트 준비를 위한 알고리즘 공부를 부랴 부랴 다시 시작합니다. 이전과 다른 점은 이제 하고자 하는 의지(?)가 있는 친구들과 함께 준비하기 때문에 이제 자의 반, 타의 반으로 코딩 테스트 공부를 함께 준비할 수 있게 되었습니다. 그래서 이전에 Greedy 알고리즘에 이어서 다시 블로그 글을 작성해봅니다. 참고 : 이코테 (이것이 취업을 위한 코딩 테스트다. with 파이썬) 사용 프로그래밍 언어 : Python 문제 유형 : Greedy 시간이 많이 지나갔기 때문에 복습도 할 겸, 그리디 유형에 대해서 살펴보도록하겠습니다. 그리디 알고리즘은 해석하면 "탐욕스러운" .. 2024. 3. 11. [알고리즘 공부] 그리디(Greedy) 알고리즘 with GPT 그리디(Greedy) 알고리즘이란 무엇일까? 안녕하세요. 이번 글은 나동빈님의 저서 [이코테]와 Chat GPT를 참고하여 알고리즘 공부 방식 중 첫 번째로 그리디(Greedy) 알고리즘에 대해서 설명하도록 하겠습니다. 그리디 알고리즘이란? 먼저 그리디 알고리즘을 간단하게 표현하면 '당장 좋은 것만 선택하는 그리디'라고 말할 수 있습니다. 이는 현재 상황에서 가장 좋아보이는 선택을 계속해서 하는 것이 특징이며, 각 선택이 부분적으로는 최적일 수 있지만, 전체로 보면 최적이 아닐 수도 있습니다. 다시 말하자면, 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 알게 모르게 제시해줍니다. 글로는 설명이 어려울 수도 있으니, GPT를 통해 생성.. 2024. 1. 1. [이코테] 유형별 알고리즘 2부 학습 - Step2 "선행 글 (먼저 읽어주세요!)" 2023.12.16 - [코딩 TEST/코테 대비 과정] - [코딩 테스트] 코딩 테스트 준비 (1) [코딩 테스트] 코딩 테스트 준비 (1) 코딩 TEST 어떻게 준비 해볼까? 2023년 8월 31일을 끝으로 학교 연구 계약직을 마치고 취업 블로그를 시작하게 되면서 취업 준비가 어느 덧 약 2개월 정도 되었습니다. 하지만 코딩 TEST를 위한 알고 muns-da2.tistory.com 학습 순서 2 단계 : '이코테' - 유형별 알고리즘 2부 학습 공부 내용 요약 단 계 2 단계 내 용 달 성 구 성 그리디 1 구현 1 DFS 1 BFS 1 정렬 1 이진 탐색 1 다이나믹 1 최단 경로 1 그래프 1 참 고 이것이 취업을 위한 코딩테스트다 with Python 관련 글.. 2023. 12. 28. 이전 1 2 3 다음 반응형