목차

안녕하세요 IT몽상가 입니다.
IT와 관련된 업무를 진행하게 되면 언제든 만나 볼 수 있는 용어에 대해서 알아보도록 하겠는데요.
바로 그 용어는 알고리즘 입니다.
이 알고리즘이란 단어가 참 여러곳에서 사용 되고 있습니다.
이제 전문용어라기보다는 보편적인 용어로 사용되고 있는데요.
그렇다면 이 알고리즘이 무엇이고 어떻게 공부하는 방법은 무엇이 있는지에 대해서 알아보도록 하겠습니다.
– 알고리즘의 개념
알고리즘은 주어진 입력에 따라 원하는 출력을 얻기 위한 일련의 절차를 이야기 합니다. 이것은 일종을 논리적인 설계라고도 하는데요.
주어진 문제를 해결하기 위한 가장 빠르고 정확한 최적의 해결책을 찾아가기 위한 방법을 제공하는 것이라고 생각하면 됩니다.
이러한 알고리즘은 다양한 분야에서 사용되고 있는데요.
사용자가 검색을 통해 원하는 결과 값을 얻기 위해서는 적절한 알고리즘을 가지고 있어야 한다고 이야기 합니다.
이 처럼 검색엔지에서도 결과값을 찾아주는 방법을 알고리즘이라고 이야기 합니다.
– 알고리즘의 역사
알고리즘이란 단어는 꽤 오래전 부터 사용 했었는데요. 처음 알고리즘은 고대 그리스 수학자인 유클리드의 ‘유클리드 호제법’이라는 알려져 있습니다.
그 이후에도 여러 학자들은 다양한 알고리즘을 개발했고, 특히 20세기 이후 컴퓨터 과학의 발전과 함께 알고리즘을 중요성을 크게 부각되고 있습니다.
저 또한 컴퓨터의 공부하는데 가장 중요한 것은 알고리즘이라고 생각하고 있죠.
– 현대 사회에서의 역할
현대 사회에서는 알고리즘이 컴퓨터 뿐만 아니라 다양한 분야에서도 사용되고 있습니다.
머신러닝과 인공지능 분야에서는 새로운 알고리즘이 학습과 의사 결정에 핵심적인 역할을 담담하고 있으며, 금융 분야에서도 금융 거래의 최적화를 위한 알고리즘이 사용되고 있죠
또한, 의료 분야에서는 진단과 치료에 관련된 알고리즘이 큰 도움을 주고 있는데요.
이처럼 IT와 같이 살아가는 현대 사회에서는 알고리즘이 빠질 수 없습니다.
– 알고리즘의 도전 과제
알고리즘은 빠르게 발전하고 있지만, 동시에 윤리적인 고민과 도전도 함께 받고 있는데요.
특히, 인공지능과 관련된 분야에서는 알고리즘의 투명성과 공정성 그리고 개인정보 보호 등에 대한 문제에 대한 고민이 계속 지속되고 있습니다.
알고리즘이란 것이 현대 사회에 반드시 필요하고 중요한 부분이긴 하다. 그에 따른 문제점이 있긴 합니다. 또한 알고리즘은 결국 일련의 절차에 따라 구성되어 있기 때문에 예상하지 못하는 변수에 대한 대응이 어렵습니다.
이러한 부분은 결국 알고리즘이 안고 가야 하는 문제 도전과제가 될 거 같습니다.
– 알고리즘의 공부하기
알고리즘은 컴퓨터 분야에 반드시 필요한 핵심 개념인데요. 프로그래밍 및 문제 해결 능력 향상에 중요한 역할을 합니다.
하지만 이러한 알고리즘을 공부하기는 쉽지 않은데요. 실재 전공자들도 어려워하는 분야기도 합니다.
이렇게 막막하고 어려운 공부 어떻게 시작하면 좋을지 이야기 해보도록 하겠습니다.
1. 기초 개념 학습
알고리즘을 공부하기 전에 기본적이 개념에 대해서 이해하고 있어야 하는 것이 중요합니다. 정렬, 검색, 그래프 이론 등 기본 알고리즘과 자료 구조에 대한 공부가 필요 합니다.
이러한 부분이 가장 어렵게 느껴 질 수 있는데요. 하지만 해당 부분은 IT 또는 현대 사회에서 가장 중요한 부분 중 하나 입니다.
2. 문제 해결 실습
이론을 배웠으면 실습인데요. 사실 해당 부분이 쉽지 않은 부분 입니다.
하지만 실습이 반복적으로 이루어지지 않는다면 적용 할 수 없는데요.
결국 알고리즘이란 실제 적용하여 얼마나 효율적으로 문제는 해결해 나갈 것인가? 가 중요한 부분이기에 실습은 필수 입니다.
3. 그룹 공부
공부 하는 방법 중에 가장 좋은 방법인데요. 그룹 공부 입니다.
같은 방향을 보고 달려가는 사람들과 같이 공부하는 것인데요.
서로 알려주고 발표해 가면서 공부하는 것이 가장 빠르고 정확한 공부법입니다.
내가 알고 있는 것과 다른 사람에게 설명하는 것은 하늘과 땅 차이입니다. 그렇기에 그룹 공부를 통해서 내가 알고 있는 것을 설명하면서 공부하는 것은 효율적인 학습 방법입니다.
4. 시간관리
알고리즘 분야는 무궁무진합니다. 단순 정렬, 자료구조 뿐만 아니라 엄청 다양한 알고리즘이 존재하는데요.
그렇기에 경주마 처럼 앞만 보고 달려가는 것은 지치기 쉽습니다. 또한 앞서 이야기 드린것 처럼 쉽지 않은 분야이기에 시간관리가 중요합니다.
우리는 100m 달리기가 아닌 마라톤을 하고 있다고 생각하면 될거 같습니다.
5. 다양한 자료 참고
개인적으로 해당 부분이 가장 중요한 부분입니다. 앞서 이야기 드린 개념을 공부하고 실습하고 하며, 그룹 공부를 시간을 잘 분배하여 하고 있으나, 다양한 자료를 참고 하지 않는다면 뒤 떨어질수 밖에 없는데요.
컴퓨터와 현대 사회는 빠르게 변화하고 있습니다. 처음 이야기 했던 다양한 알고리즘이 현재는 쓸모가 없을 수도 아니면 현재 사용하고 있지 않을수도 있는데요.
단편적인 예를 들자면, DB의 경우 모두 관계형 데이터 베이스가 가장 효율적이고 보편적이였으나, 빅데이터의 경우 이러한 관계형 데이터 베이스를 상용하고 있지 않습니다.
그렇기에 항상 다양한 자료는 참고하여 공부를 해야 합니다.
6. 프로젝트에 적용
이제 적용 부분입니다. 우리가 공부 했던 다양한 알고리즘을 프로젝트를 통해 적용해 보는 것인데요.
이 적용 이란 것이 거창하게 아닙니다. 그냥 개인적으로 특정 프로그램을 만들어 보거나, 아니면 특정 자료를 수집하고 정리하는 하는 것 등에 우리가 배우고 공부 했던 알고리즘을 적용 시켜 보는 것입니다.
그렇기에 거창하게 무엇가를 하라는 것이 아니라 우리가 배운 일련의 절차인 알고리즘을 우리 생활에 적용해보는 것을 이야기 할 수 있을거 같습니다.
– 마무리
알고리즘은 프로그래밍을 공부하는 사람들 뿐만 아니라 현대 사회에 살아가는 모든 사람이 고민하고 공부해야 하는 분야라고 생각합니다.
그 이유는 알고리즘을 목표와 연관되어 있는데요.
결국 알고리즘은 발생한 문제에 대해서 아니면 요청받은 문제에 대해서 가장 적정하고 적합한 결과를 얻기위한 일련의 절차는 고민하고 적용하는 것에 있는데요.
이러한 부분이 사회 생활을 하면서 굉장히 중요한 부분이라고 생각합니다.
문제 해결 하는 방법에 대해서 익숙해 진다는 것은 발생된 문제에 대하여 두려운 보다는 해결하는 방법을 쉽게 찾아 나아갈수 있기에 알고리즘이라는 분야는 단순 컴퓨터 IT를 뛰어 넘어 다양한 분야에 적용하고 공부해야 할 거 같습니다.
