자료구조랑 알고리즘, 아직도 '코테용'이라고 생각해?

Radin·2025년 6월 8일
21
post-thumbnail

개발하면서 한 번쯤은 이런 생각이 들었을 것이다.
‘자료구조랑 알고리즘, 실무에서 정말 필요할까?’
코딩 테스트 땐 열심히 공부했지만, 실제로는 잘 쓰지 않는다고들 한다.

실제로 동료 개발자들 중에는 알고리즘의 중요성을 크게 느끼지 못하거나, 전 직장에서 굳이 알고리즘을 쓰지 않아도 충분히 개발이 가능했다고 말하는 사람도 있었다.

하지만 실은 우리가 매일 쓰는 코드 속에 늘 숨겨져 있다.
이번 글에서는 실무 사례를 통해 왜 이 기본기가 중요한지 이야기해본다.


이거 다 자료구조 얘기였다고?

React로 리스트 렌더링할 때 map() 돌리는 거, 상태를 객체로 관리하는 거, 로그인한 사용자 정보를 Map에 저장하는 거… 이게 다 자료구조라는 거, 알고 보면 너무 당연한데도 실감이 안 날 때가 많다.

예를 들어서,

  • 장바구니 구현할 때 배열(Array)로 담고, 나중에 총합을 계산한다.
  • Zustand, Redux에서 상태 관리할 때 내부적으로 해시 맵(Map)을 써서 빠르게 업데이트하고 가져온다.
  • 댓글에 댓글이 달리면 트리(Tree) 구조가 된다.
  • 무한 스크롤 구현할 때 큐(Queue)나 슬라이딩 윈도우 패턴을 사용한다.
  • 사용자 이동 경로를 추적할 땐 그래프 구조로 모델링하면 로직이 명확해진다.

이런 걸 일일이 구현하진 않아도, "왜 이렇게 구조가 되어 있는지" 이해하고 있는 게 정말 중요하다.


알고리즘은 '효율'에 대한 감각이다

개발하면서 이런 경험 없었는가?

  • 데이터를 불러왔는데 렌더링이 너무 느리다.
  • 로그를 시간 순으로 정렬해야 한다.
  • 트리 구조를 펼쳐야 하는데 어떻게 탐색할지 감이 오지 않는다.

이런 순간에 알고리즘을 떠올리게 된다. 직접 구현까지는 안 하더라도, 어떤 방식이 더 효율적인지 감이 있는 것과 없는 건 정말 차이가 크다.

예를 들면,

  • 정렬 알고리즘을 모르면 왜 sort()가 느린지 파악할 수 없다.
  • DFS/BFS를 모르면 댓글 트리를 재귀로 도는 이유를 이해하기 어렵다.
  • 캐싱 로직을 작성할 때 LRU 알고리즘을 이해하고 있으면 훨씬 깔끔하게 구현할 수 있다.

실무 사례로 보는 자료구조와 알고리즘

1. 실시간 알림 큐 처리 (React Native + Firebase)

사용자가 실시간으로 알림을 받는 기능을 Firebase Cloud Messaging과 함께 구현하면서, 알림이 여러 개 쌓일 경우 순서가 꼬이거나 누락되는 문제가 발생했다.
이때 클라이언트 쪽에서 큐 구조를 적용해, 받은 알림을 순차적으로 보여주도록 처리했다.
단순히 배열을 사용하는 것과 큐를 명확히 적용하는 것 사이에서 안정성 차이가 꽤 컸다.

2. JSON 기반 설정 페이지 개발 (Next.js + CMS)

중첩된 옵션을 가진 설정 데이터를 CMS에서 JSON으로 받아 UI로 보여줘야 하는 페이지를 만들었다.
JSON 구조를 그대로 트리 형태로 렌더링하고, 사용자 인터랙션에 따라 하위 옵션이 열리고 닫히는 구조가 필요했다.
이 과정에서 트리 탐색(DFS) 알고리즘을 활용해 렌더링과 상태 변경을 처리했다.

3. 자동 완성 검색 (ElasticSearch + Next.js)

검색어 자동 완성 기능을 직접 구현하면서, 프론트엔드에서 사용자가 입력한 값을 기반으로 실시간으로 결과를 필터링하고 정렬해야 했다.
이를 위해 검색 리스트를 Trie 구조로 바꾸는 것을 검토했으며, 실제론 이진 탐색으로 접두어 검색을 최적화해 UX를 개선했다.
또한 정렬 로직은 정렬 알고리즘을 기반으로 사용자 클릭률 데이터를 반영하도록 구성했다.

4. 공휴일 계산기 구현 (Next.js + Holiday API)

관리자 대시보드에서 자동으로 공휴일을 계산해서 일정 관리에 활용하는 기능을 구현했다.
API에서 받은 날짜 데이터를 토대로 연도별 공휴일을 계산하고, 연속된 날짜 구간을 하나의 블록으로 묶는 처리가 필요했다.
여기서 누적합과 슬라이딩 윈도우 알고리즘을 통해 휴일 구간을 효율적으로 계산했다.

5. 사용자 권한 트리 관리 기능 (Next.js + Tree Editor)

복잡한 사용자 권한 설정을 트리 형태로 보여주고 편집할 수 있는 기능을 개발했다.
트리 구조로 렌더링하고, 자식 노드를 모두 선택하거나 해제하는 기능을 구현하면서 DFS 기반 순회 알고리즘을 사용해 UX를 자연스럽게 만들 수 있었다.


알아두면 실무에 도움 되는 자료구조와 알고리즘

자료구조

  • Array / List
  • Stack / Queue
  • HashMap / Set
  • Tree (특히 JSON 트리 구조, 컴포넌트 트리)
  • Graph (특히 페이지 간 연결 관계, 사용자 흐름 분석)
  • Trie (검색 자동완성 등)

알고리즘

  • 정렬 (Quick, Merge, Insertion 등)
  • 탐색 (Binary Search, DFS, BFS)
  • 재귀 & 백트래킹
  • 슬라이딩 윈도우, 투 포인터
  • 그리디, 다이나믹 프로그래밍 (기초 감각 정도)
  • 캐싱 알고리즘 (LRU 등)

실제로 모두 구현할 일은 없더라도, 어떤 구조에 어떤 알고리즘이 어울리는지 감을 익히는 것이 핵심이다.


결국 중요한 건, 구현보다 감각

진짜 중요한 것은, 자료구조나 알고리즘을 얼마나 '쓸 줄 아는지'보다도, 언제 어떤 걸 써야 하는지를 아는 감각이다.

회사에서 직접 그래프 알고리즘을 구현할 일은 거의 없을 수도 있다.
하지만 "이 문제는 그래프다"라고 감을 잡는 사람과, "그냥 이거 상태 하나 더 만들면 되지 않아요?"라고 말하는 사람의 차이는 크다.


마무리하며

자료구조와 알고리즘은 코딩 테스트용으로만 쓰는 도구가 아니다.
실무에서 의외로 자주 접하게 되고, 그 개념을 이해하고 있는 사람은 문제를 더 단순하게 해결한다.

사람들이 흔히 말하는 "개발 감각"이란 것도 결국 이런 기본기에서 비롯된다고 생각한다.

혹시 지금도 "자료구조, 알고리즘은 코테용이지"라고 생각하고 있다면,
슬쩍 주변 코드를 한 번 들여다보자.
아마 의외로 가까운 곳에서 이들의 필요함을 느낄 수 있을 것이다.

profile
생각을 실현하고, 경험을 새로운 가치로 정의합니다.

1개의 댓글

comment-user-thumbnail
2025년 6월 16일

실제로 알고리즘만 많이 하고 막상 개발 공부는 열심히 하지 않았을 때는 알고리즘 열심히한 걸 후회했지만 지금와서 보니 여러 성능 개선의 핵심 기법들이 알고리즘에 기반하는 것 같아서 공감되는 글이네요!
잘 읽었습니다!

답글 달기