게시글

5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭
강좌1 - Algorithm - 8년 전 등록 / 7년 전 수정

알고리즘이란?

안녕하세요. 이번 강좌는 알고리즘에 관한 강좌입니다! 중간에 자료 구조도 들어있습니다. 이 강좌는 모두 자바스크립트 코드로 짜여질 것이고요. 코드가 난해하기 때문에 이해해기 쉬우라고 주석이 많이 들어있습니다. F12를 눌러서 개발자 도구를 여시고, 콘솔 메뉴에서 알고리즘 코드를 복사 붙여넣기 해보세요! 결과를 바로 확인할 수 있습니다.

알고리즘

알고리즘이란 어떤 값을 입력받아 다른 값을 출력하는 계산 절차를 의미합니다. 간단하죠? 정의는 간단하지만, 실제로는 그렇지 않습니다... 예전에 순서도 그려보셨나요? 그 과정과 비슷합니다. 결과값을 만들기 위한 과정을 설명합니다.

알고리즘은 위의 정의처럼 출력값을 얻기 위한 절차이기 때문에 코딩을 해본 사람이라면 모두 경험해보았을 겁니다. 물론 이 강좌에서 다루는 알고리즘은 조금 복잡한 문제들입니다만 여러분들도 이미 알고리즘을 사용하여 코딩을 하고 있습니다. 겁먹을 필요는 없다는 거죠.

실생활에서도 알고리즘이 많이 사용됩니다. 인터넷에서 검색을 할 때, 검색 알고리즘이라는 말 많이 들어보셨죠? 어떻게 하면 검색어(입력값)으로부터 정확한 검색 결과(출력값)를 도출해낼 것인지 결정하는 과정입니다. 구글은 수십억 개의 문서들 중에 정확한 결과를 0.몇초만에 가져옵니다.

구글에 zerocho를 쳐보세요. 링크

undefined

외계인을 고문해서 얻은 기술인 걸까요? 어떻게 수백억 개의 데이터 중에 3만개의 검색 결과를 0.53초만에 찾을 수 있었을까요? 그것도 대충 찾은 게 아니라 상당한 정확도로 말이죠. 바로 엄청 정교하면서도 효율적인 알고리즘을 만든 겁니다.

다른 예로, 제 블로그에 사용된 SHA512 암호화(정확히는 해시 함수) 기법같은 것도 비밀번호(입력값)을 어떻게 암호(출력값)로 바꿀지 정하는 것이고요. 알고리즘은 생각보다 실생활에 밀접한 존재입니다.

대부분의 경우, 보통 사람들도 쉽게 문제 해결을 위한 알고리즘을 짤 수 있지만, 특정 상황에 가면 머리가 아파오기 시작합니다. 수백, 수천 개의 데이터를 어떻게 정렬할 것인지, n번째로 큰 수는 어떻게 찾을 것인지 등 사람이 직접 하면 간단한 것들도, 컴퓨터에게 시키려니 너무 어렵습니다. 이럴 때는 구글이나 네이버 지식인에 물어보곤 하죠. 이 강좌에서는 알아두고 있으면 편리한 알고리즘들을 소개할 겁니다. 

알고리즘수학이 매우 중요합니다. 알고리즘을 분석할 때 수행시간을 주로 따지는 데, 그것을 계산할 때 수학이 사용됩니다. 그렇지만 이 강좌에서는 최대한 수학적인 것은 쉽게 설명해보도록 노력하겠습니다. 대학교 과정이라 정말 어렵습니다. 저도 수학 별 거 아니겠지하고 무시했다가 큰 코 다쳤던 기억이 나네요. 기존보다 더 효율적인 알고리즘을 찾아보세요. 만약 찾는다면 여러분에게 엄청난 명예를 안겨다줄 겁니다. 실제로 알고리즘 하나를 개발해내면 박사 학위정도는 그냥 받을 수 있습니다.

우리가 배울 알고리즘을 시각적으로 보여주는 유튜브 영상입니다. 멍하니 보기 좋습니다.

다음 시간부터 다양한 알고리즘들에 대해 알아보겠습니다! 첫 시간은 삽입 정렬입니다.

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.
5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭

댓글

3개의 댓글이 있습니다.
5달 전
인프런 강좌랑 같이 수강 중이에요! 이런 강좌를 만들어주셔서 감사해요 제로초님-!
7년 전
선생님께서 말씀하신 알고리즘에 대해서 설명을 잘들었는데요. 알고리즘의 정의에 대해서 제 블로그에 조금 써도 될까요?
7년 전
한 두 줄 정도면 그냥 쓰셔도 되고 여러 줄이라면 제 블로그를 참조했다고만 남겨주세요~
7년 전
선생님께서 말씀하신 아무리 언어나 문법을 알아도 알고리즘을 모른다면 정말 힘들다는 말씀을 뼈저리게 느낍니다. ㅜ자바스크립트로 짜여진 알고리즘은 책으로도 한글로 된 것은 몇 권 없는데.. 정말 감사합니다. 열공열공!