728x90

개발/알고리즘 13

[알고리즘] 깊이 우선 탐색 / 너비 우선 탐색 (DFS / BFS Algorithm)

스택은 선입후출 구조 또는 후입선출 구조라고 함 큐는 선입선출 구조라고 함 재귀 함수란 자기 자신을 호출하는 함수이다 DFS는 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다 BFS는 가까운 노드부터 탐색하는 알고리즘이다 DFS - 스택의 동작 원리, 재귀 함수 이용하여 구현 BFS - 큐의 동작 원리, 큐 자료구조 이용하여 구현 자료구조 기초 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS를 꼽을 수 있다. DFS와 BFS를 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 전제되어야 한다. 자료구조란 '데이터를 표현하고 관리하고 처리..

개발/알고리즘 2021.10.19

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

구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념 프로그래밍 언어의 문법을 정확히 알고 있어야 함 라이브러리 사용 경험을 늘려야 함 파이썬의 경우 자료형의 표현 범위 제한에 대해 깊게 생각하지 않아도 되지만 실수형 변수는 유효숫자에 따라서 연산 결과가 원하는 값이 나오지 않을 수 있음 크기가 1,000만 이상인 리스트가 있다면 메모리 용량 제한으로 문제를 풀 수 없게 되는 경우도 있음 일반적인 기업 코딩 테스트 환경에서는 파이썬으로 제출한 코드가 1초에 2,000만 번의 연산을 수행한다고 가정하면 크게 무리가 없음 알고리즘 문제를 풀 때는 시간제한과 데이터의 개수를 먼저 확인한 뒤에 이 문제를 어느 정도의 시간 복잡도의 알고리즘으로 작성해야 풀 수 있을 것인지 예측할 수 있어야 함 코..

개발/알고리즘 2021.10.18

[알고리즘] 그리디(탐욕) 알고리즘 (Greedy Algorithm)

현재 상황에서 지금 당장 좋은 것만 고르는 방법 (매 순간 좋아 보이는 것을 선택) 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 창의력, 즉 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구 정렬 알고리즘과 짝을 이룸 대부분의 문제는 그리디 알고리즘을 이용했을 때 '최적의 해'를 찾지 못함 문제 풀이를 위한 최소한의 아이디어를 떠올리고 그것이 정당한지 검토할 수 있어야 함 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 탐욕법으로 불리기도 한다. 이름에서 알 수 있듯이 어떠한 문제가 있을 때 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘이다. 여기서 탐욕적이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미한다. 그리디 알고리즘을 이용하면 ..

개발/알고리즘 2021.10.17
728x90