본문 바로가기
코딩 테스트

[02] 알고리즘이란?

by 너티드코오딩 2023. 11. 8.

알고리즘은 무엇일까?

알고리즘을 구현했다. 알고리즘을 짰다. 이런 얘기는 한번씩 들어봤을 것이다.

 

나도 알게 모르게 "알고리즘 구현", "알고리즘 개발" 이런 키워드들을 보고서나 제안서에 썼던 것 같다.

 

공부를 하다보니 알고리즘을 구현하고 개발한다는게 넓은 의미에서 틀린건 아니지만, 내가 한건 알고리즘 구현 개발이 아니라 조합..같은 것이었달까.ㅎ

 

1. 알고리즘

문제해결을 위한 방법으로 정해진 절차 또는 방법

 

쉽게 설명하면 문제풀이 해설 틀 정도로 이해하면 좋을 것 같다.

 

코딩테스트를 보면 어떤 알고리즘을 써야하지? 라는 의문이 드는데

정형화된 몇몇 패턴들이 있다. BFS, DFS 등

이게 알고리즘인데, 즉 많이 패턴화된 방법을 공부해서 내가 필요한 순간에 이걸 쓰면 되는것이다.

 

그러니까 결국엔 BFS, DFS, Dijkstra 등 패턴화된 알고리즘들이 있는데 이것들은 많이 쓰이니까 틀(frame)로 구축이 되어 있는 것이고 이걸 활용해서 새로운 문제에 적용하면 되는 것이다.

 

따지고 보면 내가 만들었던 모델이나 코드들이 알고리즘으로 볼 수 있으려나..

 

전에 마술에 빠져서 마술 기술들을 공부했던 적이 있다.

그때 느꼈던 것이 예를 들어 a, b, c의 3가지 기술을 배워 조합해보니 정말 수백가지의 마술을 만들 수 있었다.

그 기술들을 어떻게 포장해서 보여줄 것인지에 따라 달린것이었다.

 

알고리즘도 똑같은것 같다.

형식화된 패턴들이 있고, 이를 어떻게 포장하냐에 따라서 코딩 테스트 문제가 주어지는 것.

 

이렇게 생각하니 알고리즘을 이해하기 편했다.

그러면 어떤 공부를 하면 될까?

 

마술에서도 보면, a, b, c 의 기술이 중요했듯이 알고리즘 하나 하나가 중요한 것이 아닐까?

알고리즘 하나 하나씩 이해해서 활용하려면 앞서 보았던 자료구조를 활용해야 하는 것이다.

 

즉 코딩 테스트를 위한 사고는 다음과 같을 것이다.

 

문제를 정의하고 주어진 조건을 고려해서(해당 사고에서는 복잡도는 제외해보자)

1) 어떤 알고리즘을 활용할 것인가?

2) 그 알고리즘에서는 어떤 자료구조를 쓸 것인가?

 

이렇게 문제를 정의하고 코드를 구현하면 될 것이다.