1. 무한 루프에 빠진 개발자 논쟁 시리즈:
1편 알고리즘과 자료 구조
알도개(알고 보면 도움되는 개발 이야기)
이미지 출처: https://www.flickr.com/photos/75409276@N06/29379427975
CC BY-NC-SA 2.0
2. 알고리즘과 자료구조의유용성논쟁
주기적으로 찾아오는 떡밥
CRUD 처리 가능한 수준에서 API만으로
프로그램 작성이 가능하므로 자료구조/
알고리즘은 중요하지 않거나 후순위다.
소프트웨어 개발에서 기초가 튼튼해야
하며, 그 중에서도 특히 알고리즘과 자
로 구조가 핵심이다.
4. 알고리즘과 자료구조의유용성논쟁
라떼는 말이야…
• C의 기본 라이브러리에는 알고리즘이라고
부를 만한 구성 요소가 거의 없다. qsort(3)
정도?
• 자료 구조 관점에서 보면 구조체와 배열이
사실상 전부다.
• 클래스 개념도 없기에 모듈 구성을 위해 구
조체 포인터를 인수로 넘기는 식으로
ADT(Abstract Data Type)를 수동으로 구성
해야 한다.
5. 알고리즘과 자료구조의유용성논쟁
하지만 세상은 바뀌고…
• 하드웨어 성능 향상 이면에 병행 프로그램 작성의 어려움
• C++(with STL), 자바, 파이썬, 어서 오고!
• 오픈소스로 필요한 소프트웨어 획득이 손쉬워짐
• 스택오버플로 등장
• 로 코드와 깃헙 코파일럿 등장
6. 알고리즘과 자료구조의유용성논쟁
알고리즘과 자료구조가 중요한 이유
• 내부 동작 원리를 설명할 때 구구절절 동작 방식을 늘어놓아야
하나?
• 정량적으로 지원자를 평가하는 과정에서 모수가 엄청나게 많
을 경우 효과적인 필터 방안이 있을까?
• 소프트웨어 개발 과정에서 문제가 발생할 때 이를 해결하기 위
한 프레임은 무엇일까?
• 참고: FAANG 경력 개발자들이 선호하는 자료 구조는 set/map,
tree, graph, binary search
(https://jhrogue.blogspot.com/2018/04/b-quora.html)
7. 알고리즘과 자료구조의유용성논쟁
생각을 바꿔보자
• 알고리즘과 자료 구조를 문제 해결 관점에서 생각할 필요가
있다
• 주어진 문제를 해결하기 위한 입/출력이 무엇이고 제약이 무
엇이고 이 제약을 풀기 위해 어떤 과정에 필요하고 이런 과
정을 모듈화하기 위한 방법은 무엇일까? → 이게 알고리즘과
자료 구조의 핵심이다
8. 알고리즘과 자료구조의유용성논쟁
결론
• 인공지능이나 현업의 복잡한 시스템을 만들기 위
해서는 알고리즘과 자료 구조를 이해해야 한다
• 알고리즘과 자료 구조는 학계와 업계 선배들이
컴퓨터에서 자주 풀어야 하는 문제를 모아 해법
을 고안하는 과정에서 만들어진 분야라고 생각하
면서 내게 이 문제가 주어지면 어떻게 풀어낼지
를 고민하자.
9. 발표자 소개
기술 배경
전문 검색 엔진, 임베디드 시스템(리눅스 커널 디바이스 드라이버), 빅데이터/인공지능 연구 개발,
고성능 고가용성 데이터베이스
주요활동
IT 전문서 번역 (클린 코드, 피플웨어, 해커: 광기의 랩소디, 게임 엔진 블랙 북 등)
개발강의 (삼성전자, SK C&C, 삼성SDC, 현대자동차 기술 세미나와 교육)
활동채널
블로그: https://jhrogue.blogspot.com
슬라이드 셰어: https://www.slideshare.net/jrogue/presentations
유튜브: https://www.youtube.com/c/박재호dev
문의 jrogue@gmail.com
박재호