[내일배움캠프] - DAY13 자료구조와 알고리즘-1

2026. 1. 26. 19:53·TIL & 트러블 슈팅

알고리즘(Algorithm)

우리가 프로그램을 작성하면서 한번쯤 들어볼 알고리즘 이라는 것이 있습니다. 알고리즘은 프로그래밍을 하면서 꼭 필요하며 중요한 것입니다. 프로그래밍에서의 알고리즘은 문제를 해결하기 위한 단계적인 절차나 방법을 의미하며, 데이터 처리와 문제 해결에 사용됩니다. 아래에서는 알고리즘의 주요 특성에 대해서 알아보겠습니다.

 

  • 정확성 : 정확한 출력 생성
  • 효율성 : 자원 효율적 사용
  • 일반성 : 이해하기 쉬운 형태
  • 간결성 : 다양한 입력 데이터에 작동

정렬 알고리즘

데이터를 정렬하는 데 사용됩니다. (ex : 버블 정렬, 퀵 정렬)

 

탐색 알고리즘

데이터에서 특정 값을 검색합니다. (ex : 선형 검색, 이진 검색)

 

그래프 알고리즘

그래프 구조 분석과 최단 경로, 플로우 네트워크 계산에 사용됩니다. (ex : 다익스트라 알고리즘, 프림 알고리즘)

 

문자열 알고리즘

문자열 처리와 관련된 알고리즘 입니다. (ex : KMP알고리즘, 보이어-무어 알고리즘)

 

동적 계획법

복잡한 문제를 작은 부분 문제로 나누어 해결합니다. (ex : 피보나치 수열, 최장 증가 부분 수열)


자료구조(Data Structure)란?

자료구조는 데이터를 저장, 관리, 접근, 수정하는 방식을 정의하는 구조로, 알고리즘이 효율적으로 동작할 수 있는 기반을 제공합니다. 즉, 자료구조는 단순히 데이터를 담는 그릇이 아니라, 데이터를 다루는 규칙과 방법을 의미합니다. 이를 통해 데이터를 삽입, 삭제, 검색, 정렬하는 등의 작업을 효율적으로 수행할 수 있습니다. 예를 들어, 정렬된 데이터를 다룰 때 이진 탐색 트리(Binary Search Tree) 와 같은 자료구조를 사용하면 검색 성능을 극대화할 수 있고, 큐(Queue)나 스택(Stack) 같은 자료구조는 작업의 순서를 제어할 때 유용하게 활용됩니다.


자료구조가 중요한 이유

코딩 테스트나 실무에서 자료구조가 강조되는 이유는, 어떤 자료구조를 선택하느냐에 따라 문제 해결의 속도와 효율성이 크게 달라지기 때문입니다. 예를 들어, 단순히 배열을 사용할 수도 있지만 상황에 따라 해시 테이블, 그래프, 트리 같은 자료구조가 훨씬 더 효율적일 수 있습니다. 따라서 자료구조의 개념과 특징을 정확히 이해하고, 다양한 문제를 풀며 연습하는 것이 매우 중요합니다.


자료구조의 분류

자료구조는 크게 선형 구조(Linear Structure) 와 비선형 구조(Non-Linear Structure) 로 나눌 수 있습니다.

 

선형 구조 (Linear Structure)

데이터가 일렬로 나열되어 순서대로 연결되는 구조

 

  • 배열(Array)
  • 데이터를 연속적으로 저장하며, 인덱스를 사용하여 접근 가능한 구조

 

  • 연결 리스트(Linked List)
  • 각 노드가 데이터와 포인터를 가지며, 다음 노드를 가리키는 방식

 

  • 스택(Stack)
  • 후입선출(LIFO) 방식으로 데이터 삽입과 삭제가 한쪽 끝(top)에서만 이루어짐

 

  • 큐(Queue)
  • 선입선출(FIFO) 방식으로 삽입은 rear, 삭제는 front에서 이루어짐

 

비선형 구조 (Non-Linear Structure)

데이터가 계층적이거나 망형(Network)으로 연결되는 구조

 

  • 트리(Tree) (이진 트리, AVL 트리 등)
  • 계층적 구조로, 루트 노드에서 시작하여 부모-자식 관계를 가짐

  • 그래프(Graph) (방향 그래프, 무방향 그래프 등)
  • 정점(노드)과 간선(엣지)으로 구성된 구조로, 관계를 나타냄

  • 힙(Heap)

 

 

TIP

많은 사람들이 혼동하는 자료구조와 알고리즘을 쉽게 구분하면 다음과 같습니다. 자료구조는 데이터를 어떻게 저장하고 정리할지에 대한 틀이고, 알고리즘은 그 데이터를 활용해 문제를 어떻게 해결할지에 대한 절차와 방법입니다.


자료구조 핵심 키워드


[ 오늘 배운 학습 ]

1. 자료구조

2. 알고리즘

 

[ 다음 학습 계획 ]

1. 자료구조 심화

'TIL & 트러블 슈팅' 카테고리의 다른 글

[내일배움캠프] - DAY15 일정관리 앱 만들기  (0) 2026.02.04
[내일배움캠프] - DAY14 자료구조와 알고리즘-2  (0) 2026.01.27
[내일배움캠프] - DAY12 제네릭, Enum, 람다, 스트림을 활용하여 계산기 개선하기  (0) 2026.01.18
[내일배움캠프] - DAY11 자바에 대해 알아보자-3  (0) 2026.01.16
[내일배움캠프] - DAY10 계산기 만들기  (0) 2026.01.13
'TIL & 트러블 슈팅' 카테고리의 다른 글
  • [내일배움캠프] - DAY15 일정관리 앱 만들기
  • [내일배움캠프] - DAY14 자료구조와 알고리즘-2
  • [내일배움캠프] - DAY12 제네릭, Enum, 람다, 스트림을 활용하여 계산기 개선하기
  • [내일배움캠프] - DAY11 자바에 대해 알아보자-3
N_HYUN
N_HYUN
안녕하세요! 현이의 개발 공부방입니다.
  • N_HYUN
    현이의 개발 공부방
    N_HYUN
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • FrontEnd (0)
      • BackEnd (0)
        • Java (0)
      • DataBase (1)
      • TIL & 트러블 슈팅 (24)
      • Etc (4)
        • Theoretical Computer Scienc.. (1)
        • Web & CS (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
N_HYUN
[내일배움캠프] - DAY13 자료구조와 알고리즘-1
상단으로

티스토리툴바