Super Kawaii Cute Cat Kaoani

코딩테스트 [킬링캠프]

1.0 알고리즘 패러다임 (Algorithm paradigm)

zozni 2024. 1. 2. 14:06
728x90
반응형
SMALL

<aside> 💡 "알고리즘 패러다임"은 문제를 해결하는 데 사용되는 기본적인 철학이나 방법론을 말합니다.

</aside>

코딩 테스트에서는 주어지는 문제들을 한정된 시간 안에 정해진 형태의 입력을 가지고 답을 구해야 합니다. 그러기 위해서 저희는 각 문제별 풀이 과정을 발견해야하는데, 이런 풀이 과정들은 저희가 배웠던 자료구조와 알고리즘을 기반으로 만들어집니다.

https://en.wikipedia.org/wiki/Algorithmic_paradigm

알고리즘 패러다임에는 여러가지 종류가 있지만, 코딩 테스트에서 자주 사용되는 종류만 추려서 앞으로 교재에서 다룰 주요한 알고리즘 패러다임을 다음과 같이 정리했습니다.

알고리즘 패러다임

  1. 완전탐색
  2. 백트래킹
  3. 탐욕법
  4. 분할정복
  5. 동적 계획법

<aside> 📍 알고리즘이란

  • 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법; 문제를 해결하는 방법
  • 자주 쓰이는 문제 해결 방법(알고리즘)은 패턴화; BFS, DFS, DP, 다익스트라 등등
  • 각 상황에 적합한 알고리즘을 선택할 수 있어야 한다. </aside>

알고리즘은 수학과 컴퓨터과학 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법입니다. 알고리즘은 “**문제를 해결하는 방법”**이기 때문에 언어는 상관없습니다. 같은 원리에 따라 동작한다면 다른 언어로 작성되었더라도 같은 알고리즘을 사용했다고 볼 수 있습니다.

개발자는 현실의 문제를 해결하기 위해 코드를 작성하여 프로그램을 개발합니다. 한 문제를 해결하는 방법은 한 가지만 있는게 아니라 무수히 많을 수 있습니다. 그 중에서 자주 쓰이는 문제 해결 방법에는 BFS, DFS, DP, 다익스트라 등과 같이 이름을 붙여서 문제 해결 방법을 패턴화 하였습니다. 이렇게 패턴화된 문제 해결 방법을 보통 알고리즘이라고 부릅니다. 알고리즘을 학습하여 응용, 적용할 수 있게 된다면 비슷한 문제를 보다 쉽게 해결할 수 있습니다.

같은 문제상황에서도 개발자마다 해결 방법으로 내놓은 알고리즘이 다를 수 있습니다. 문제만 해결하면 되므로 아무 알고리즘으로 코드를 작성하면 될까요? 그렇지 않습니다. 문제를 해결할 수 있는 알고리즘이 여러 가지가 있더라도, 상황에 맞는 알고리즘을 잘 선택해야 합니다.

알고리즘 예시

  • DFS/ BFS
  • 다익스트라
  • 정렬 (버블정렬, 퀵정렬 등등)
  • 이진탐색
  • 선형탐색
  • 투포인터

간단히 정리하면 알고리즘 패러다임은 알고리즘보다 더 높은차원의 추상화 입니다. 그러니 문제를 풀 때 알고리즘 패러다임을 생각해보고 → 해당 패러다임에 적용할 알고리즘/자료구조 를 선택해서 풀어나가면 됩니다.

물론 이런 과정을 의식적으로 생각하지 않더라도 쉽게 접근방법이 떠올라서 문제를 체계없이 풀어서 통과하는경우도 많이 있을겁니다. 하지만 처음보는 유형을 보고 접근방법이 떠오르지 않을 때, 알고리즘 패러다임을 선정하는 것부터 되돌아가서 생각해보면 접근방법을 떠올리는데 도움이 많이 될 겁니다.

따라서 우리는 문제를 풀면서 연습할 때에도 이 문제를 어떤 알고리즘 패러다임으로 풀 것인지, 그리고 이유와 근거는 무엇 때문인지를 인지하면서 연습하면 실전에서도 도움이 많이 될 겁니다.

728x90
반응형
LIST

'코딩테스트 [킬링캠프]' 카테고리의 다른 글

1.3 탐욕법 (Greedy)  (0) 2024.01.03
1.2 백트래킹 (Backtracking)  (2) 2024.01.02
1.1 완전탐색 (Exhaustive search)  (0) 2024.01.02
0.2 문자열  (1) 2024.01.02
0.1 올바른 파이썬 이해를 위한 사전 지식  (0) 2024.01.02