뚱땅뚱땅 코딩 블로그의 새로운 컨텐츠 알고리즘 공부하기가 시작됐다.
최대한 오래 지속될 수 있도록 노력해보겠다.
알고리즘
우선 알고리즘이 무엇인지 부터 알아보자
알고리즘(영어: algorithm), 셈법은 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이다. 계산을 실행하기 위한 단계적 절차를 의미하기도 한다. 즉, 문제 풀이에 필요한 계산절차 또는 처리과정의 순서를 뜻한다. 프로그램명령어의 집합을 의미하기도 한다.
[위키백과/ 알고리즘]
이게 무슨 소린가 싶겠지만 쉽게 이해할 수 있도록 현실 세계에서 비유할만한 것을 찾아보겠다.
알고리즘은 음식의 레시피와 비슷하다.
재료를 사용하여(입력을 받고) -> 레시피의 방법대로 요리(알고리즘으로 문제를 해결) -> 음식 완성(정답 출력)
알고리즘을 공부하는 이유
취업 혹은 부트캠프 등을 지원할 때 코딩 테스트로 알고리즘 문제를 푸는 것을 요구하는 것을 볼 수 있다. 대체 왜 알고리즘 문제 해결 능력을 요구하는 것일까?
코딩 테스트 문제를 풀어본 사람은 알겠지만, 알고리즘 문제는 대부분의 개발보다 크기가 작다. 그리고 실제 개발 과정에서 있을법한 문제를 알고리즘 문제 스타일로 변형한 경우가 많다.
때문에 코딩테스트나 인터뷰에서는 문제를 모델링하고 해결하는 능력을 알아보기 위해서 알고리즘 문제를 푸는 것이다.
알고리즘의 효율성
알고리즘 문제를 해결하는 코드를 작성했을 때, 가장 중요한 것이 무엇일까?
1. 수행 시간
2. 사용한 메모리
단언컨대 수행 시간이 가장 중요하다.
어떤 프로그램을 작성했을 때, 실행 시간이 30시간이 걸리면 정말로 30시간 동안 실행시켜야 한다.
하지만 어떤 프로그램을 작성했는데 메모리가 64GB가 필요하다면 추가로 램을 구매하면 해결할 수 있다.
때문에 효율성이 좋은 알고리즘이란 실행 시간이 빠른 알고리즘이라 할 수 있다.
시간 복잡도, 메모리 크기 등에 대한 내용은 다루지 않겠다.
총평
알고리즘 사실 나도 잘 못 하는데 이번 기회에 열심히 공부해보도록 하겠다.
'🧑💻코딩 테스트 > 알고리즘' 카테고리의 다른 글
[코딩테스트/알고리즘] 그래프(Graph) - 그래프의 표현 (0) | 2022.12.09 |
---|---|
[코딩테스트/알고리즘] 그래프(Graph) - 그래프 종류, 그래프 용어 (0) | 2022.10.27 |
[코딩테스트/알고리즘] 브루트 포스(Brute Force) (0) | 2022.09.02 |
[코딩테스트/알고리즘] 다이나믹 프로그래밍(Dynamic Programming) (0) | 2022.08.29 |
댓글