자료구조 & 알고리즘 - 중요한 이유

Jun 2k (Jun2)·2023년 9월 22일

자료구조&알고리즘

목록 보기
1/19

자료구조와 알고리즘

요리에 비유할 수 있음
요리를 하기 위해서는 재료와 조리도구, 요리 레시피가 있어야 가능하다.
이 때 재료는 데이터, 조리도구는 자료구조, 요리 레시피는 알고리즘에 비유할 수 있다.
이 세 가지를 잘 다루는 사람이 실력 있는 개발자가 될 수 있다.

자료구조 + 알고리즘 = 프로그램


자료구조

메모리를 효율적으로 사용하여 빠르고 안정적으로 데이터를 처리하기 위한 도구이다.
각기 다른 개발 상황에 따라 유용하게 사용 할 수 있도록 특정 구조를 가지고 있다.

자료구조의 예) Stack, Queue, Graph, Tree 등


알고리즘

특정 문제를 효율적으로 빠르게 해결하기 위해 일련의 절차나 방법을 공식화화여 표현한 것이다.
수학적인 지식과 특정 메커니즘을 사용한다.

예) Binary Search(이진 탐색), Shortest Path(최단 거리 탐색), BFS, DFS


자료구조와 알고리즘의 중요성

개발 실무에서 중요하게 생각하는 3가지

1. 기초 코딩 능력
코딩 능력과 논리적인 사고 능력 = 문제 해결 능력
=> 자료구조와 알고리즘을 공부하면 기초 코딩 능력이 향상된다!


2. 전문 분야 지식
프론트엔드, 백엔드, 데이터 사이언스 등 전문 특화 능력
깊이 알 수록 좋고 최신 트렌드를 잘 따라가야 한다.


3. 기본 CS 지식
운영체제, 네트워크, 컴퓨터공학 등 학문적인 지식
기술 면접 때 중요


문제 해결 능력

1. 논리적 사고

어떠한 문제나 현상이 존재할 때 이를 추론하고 구조화하여 해결하는 사고
해결 방법이 논리적으로 말이 되는지 생각하는 것

Quiz. 빨간 눈의 승려 문제

https://gyumeen.github.io/practice/algorithm-20200513/
정답은 빨간 눈을 가진 승려가 n명이라면 n번째 날에 해당 승려가 동시 자살한다.
출처 : 누워서 읽는 알고리즘 도서


2. 전산화 능력

현실에 있는 것을 소프트웨어 영역으로 구현하는 능력
컴퓨터적 사고 능력과 동일


3. 엣지 케이스 탐색

예외사항을 얼마나 잘 찾는지에 대한 능력
미처 생각하지 못한 예외적 케이스(반례)로 인한 버그를 막을 수 있다.

위 세가지가 문제 해결 능력 (일머리)의 핵심!!

자료구조, 알고리즘을 잘 알아둬야 하는 이유 중 중요한 한 가지는
검증된 것들은 잘 변하지 않는다는 것이다.
예를 들어 최단거리 알고리즘(Dijkstra 알고리즘)은 1956년에 만들어졌으나
현재까지 꾸준히 사용되고 있다.


실제 활용 사례

  • 상황

    100만개의 데이터를 최신으로 업데이트하기 위한 배치 작업이 필요했다.
    데이터는 csv 파일로 제공되었고 이 중 기존 DB에 없는 고객을 추가되어야 했다.
    하지만 데이터에는 고객 key 값이 없었으므로 DB의 여러 필드를 대조하여 찾아야 했다.


  • 구현

    모든 데이터를 순회하여 고객을 찾고 업데이트를 해보았다. 없다면 추가했다.


  • 결과

    100만개를 처리하려면 현실적으로 5일 넘게 걸리므로 비효율적이었다.


  • 개선 방법

    모든 데이터를 이름을 기준으로 해시 테이블에 저장
    동명이인은 해시 테이블 value 값을 연결 리스트(Linked List) 로 추가
    고객을 찾을 때는 이름을 key로 찾고 동명이인이 있다면 이진 탐색으로 찾음
    최종적으로 20분만에 데이터를 처리 가능했다.

이 처럼 자료구조와 알고리즘을 적절히 사용하면 대용량 작업이나 트래픽 처리가 가능하다.



😅 해당 내용은 공부하면서 정리한 글입니다. 틀린 부분이나 오해하고 있는 부분이 있다면 피드백 부탁드립니다.

profile
유리프트 프론트엔드

0개의 댓글