Algorithm/Learning

알고리즘이란? & 알고리즘 공부 계획

앵도라지 2023. 1. 26. 18:41

생활 전반에서 우리는 ‘알고리즘’이라는 단어를 만나게 된다. 유튜브, 넷플릭스와 같은 미디어를 소비하는 과정 뿐만 아니라, 계산 절차나 처리 과정에서도 어떠한 알고리즘으로 내 눈에 보이는 결과값이 나왔는지 궁금해하는 일이 아주 흔하다.

모두가 알고있듯 알고리즘은 개발의 과정에서는 필수적으로 요구되는 능력이고, 기업의 입사 과정에서도 가장 첫 번째 전형으로 만난다. 그렇다면, 과연 알고리즘이란 무엇일까?

 

 

 

알고리즘 정의

알고리즘에 대한 정의는 아래와 같이 3가지로 정리할 수 있다.

  1. 유한한 단계를 통해 문제를 해결하기 위한 절차나 방법
  2. 컴퓨터 용어로 쓰이며, 컴퓨터가 어떤 일을 수행하기 위한 단계적 방법
  3. 어떤 문제를 해결 하기 위한 절차

마치 거창한 것처럼 알고리즘을 생각하는 경향이 있지만 알고리즘이란 결국 어떠한 문제를 해결하기 위한 절차적인 방법으로 간단히 설명할 수 있다.

 

알고리즘 표현법

알고리즘을 표현할 수 있는 방법도 크게 2가지가 있다.

  1. 슈도코드
    • 특정 프로그래밍 언어의 문법을 따라 쓰여진 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써 놓은 코드
    • 의사 코드로 흉내만 내는 코드 실제적인 프로그래밍 언어
    • 실제적인 프로그래밍 언어로 작성된 코드처럼 컴퓨터에서 실행할 수 없음
    • 특정 언어로 프로그램을 작성하기 전에 알고리즘을 대략적으로 모델링 하는데에 쓰임
  2. 순서도
    • 프로그램이나 작업의 진행 흐름을 순서에 따라 여러 가지 기호나 문자로 나타낸 도표
    • 흐름도, 프로그램의 논리적인 흐름

 

알고리즘 성능 분석

알고리즘 문제 해결 과정에서 우리는 성능 분석이라는 절차를 만나게 된다.

성능이 좋지 못한 알고리즘을 짜게 됐을 경우에는 알고리즘 문제를 해결하지 못한 것으로 보기도 한다.

이런 알고리즘 성능은 아래와 같은 항목으로 나뉘어 척도를 평가해 종합적으로 분석된다.

  • 정확성
  • 작업량
  • 메모리 사용량
  • 단순성
  • 최적성

요약하자면, 시간복잡도와 메모리 사용량등을 고려해 최적의 문제 해결과정을 결정하는 것이 좋은 알고리즘이라고 할 수 있다.

 


알고리즘 공부 계획

처음부터 막힘없이 문제를 풀 수 있으면 좋겠지만, 알고리즘은 어려운 문제일수록 정해진 유형과 해결 방법을 파악하고 이를 연습을 통해 암기해야 하는 것이 필수적이다.

나는 알고리즘 공부 목표를 코딩테스트 통과로 정했기 때문에 아래와 같은 순서로 알고리즘 공부를 진행하기로 했다.

  1. 그리디 알고리즘 (구현문제)
  2. 브루트포스 (DFS, BFS)
  3. 정렬
  4. 이진탐색
  5. DP
  6. 최단경로(플로이드, 다익스트라)
  7. 분할정복

 

공부 방법

알고리즘은 1차 개념 학습을 책과 SWEA 강의, 구글링을 통해 먼저 진행하고,

관련 문제를 SWEA, 백준, 프로그래머스와 같은 사이트를 통해 기본 문제 풀이 연습을 5문제 이상 풀이하면

심화 문제를 2문제 이상 풀이하는 것으로 하려 한다.

전체 알고리즘 개념 학습이 1회독이 되면 이후에는 유형 분류 없이 난이도별로 기출부터 문제를 풀이한다.

험난한 여정이 되겠지만 화이팅!