algorithm 4

[Algorithm] BFS (너비 우선 탐색)

1. BFS (Breadth-First Search) 너비 우선 탐색이라고 부르며, 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. 동작 과정에서 큐 자료구조를 이용한다. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에 방문하지 않은 노드를 모두 큐에 한 번에 삽입하고 방문 처리한다. 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. 그림으로 과정을 나타냈을 때, 다음과 같다. 이러한 과정을 반복하였을 때, 전체 노드의 탐색 순서(스택에 들어간 순서)는 다음과 같다. python 코드로 구현하면 다음과 같다.

[Algorithm] DFS (깊이 우선 탐색)

1. DFS : Depth-First Search 깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS는 스택 자료 구조, 재귀 함수를 이용한다. 구체적인 동작 과정은 다음과 같다. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 더 이상 2번 과정을 수행할 수 없을 때까지 반복한다. 과정을 그림으로 나타내면 다음과 같다. 이러한 과정을 반복하였을 때, 전체 노드의 탐색 순서(스택에 들어간 순서)는 다음과 같다. python 코드로 구현하면 다음과 같다.

[Algorithm] 구현 알고리즘 (Implementation)

1. 구현 알고리즘 간단하게 말해서, 풀이를 떠올리는 것은 쉽지만 코드로 구현하기 어려운 문제의 유형을 말한다. 일반적으로 알고리즘 문제에서의 2차원 공간은 행렬(Matrix)의 의미로 사용되는데, 시뮬레이션 및 완전 탐색 문제에서 2차원 공간에서의 방향벡터가 자주 활용된다. 2. 구현 알고리즘 출제 유형 알고리즘은 간단한데 코드가 지나치게 길어지는 문제 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정한 기준에 따라 처리해야 하는 문제 적절한 라이브러리를 찾아서 사용해야 하는 문제 2. 구현 해법 및 연습 문제를 풀어나갈 수 있는지 생각한다. 이를 코드로 구현하는 과정을 단계로 나누어서 정리한다. (주석으로 정리) 단계별로 하나씩 차근차근 코드를 작성한다. 문제를 접했을 때 ..

[Algorithm] 그리디 알고리즘(greedy)

1. 그리디 알고리즘? 그리디 알고리즘은 탐욕적으로 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 문제를 해결하는 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 것이다. 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. 2. 그리디 해법? 그리디 해법은 정당성 분석이 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토해보고 타당한 근거를 정리하는 연습을 할 필요가 있다. 따라서, 코딩 테스트에서는 탐욕 법으로 얻은 해가 최적의 해가 되는 상황에서, 이를 추론할 수 있어야 풀리도록 출제된다.