호우동의 개발일지

Today :

article thumbnail

자료구조와 알고리즘

  • 자료구조 : 컴퓨터에서 자료를 정리하고 조직화하는 다양한 구조
  • 알고리즘 : 컴퓨터에서 문제를 해결하기 위한 절차적 단계
  • 프로그램 = 자료구조 + 알고리즘

 


알고리즘의 조건

  • 입력(Input) : 0개 이상의 입력이 존재해야 한다.
  • 출력(Output) : 1개 이상의 출력이 존재해야 한다.
  • 명백성(Definiteness) : 각 명령어의 의미는 모호하지 않고 명확해야 한다.
  • 유한성(Finiteness) : 한정된 수의 단계 후에는 반드시 종료되어야 한다.
  • 유효성(Effectiveness) : 각 명령어들은 실행 가능한 연산이어야 한다.

 

 


알고리즘 기술 방법


자연어

자연어 예시
자연어 예시

  • 장점 : 읽기 쉽다.
  • 단점 : 의미 전달이 모호하다.

 


흐름도(flow chart)

흐름도 예시
흐름도 예시

  • 장점 : 직관적이고 이해하기 쉽다
  • 단점 : 알고리즘이 복잡해지면 이해하기 어렵다.

 


유사코드

유사코드 예시
유사코드 예시

  • 알고리즘 기술에 가장 많이 사용
  • 알고리즘 고수준 기술 방법
    • 자연어보다 더 구조적
    • 프로그래밍 언어보다는 덜 구체적
  • 알고리즘의 핵심적인 내용에만 집중

 

 


추상 자료형


자료형

  • 기초 자료형 : char, int, float , double
  • 파생 자료형 : 배열, 포인터
  • 사용자 정의 자료형 : 구조체, 공용체, 열거형
  • 복잡한 자료형 : 스택, 큐
    • 연산은 함수로 작성

 


추상화

  • 어떤 시스템의 간략화된 기술 또는 명세
  • 중요한 정보만 강조, 나머지 구현 세부 사항 제거 → 정보은닉 기법 → 추상 자료형의 개념

 


추상 자료형(ADT)

  • 데이터의 집합과 연산들의 집합의 추상적 명세
  • 구현으로부터 분리된 자료형을 의미
    • 자료나 연산이 무엇인지를 정의하나 어떻게 구현할 것인지는 정의하지 않음

  • 추상 자료형이 표현 : 데이터를 정의하고 연산들을 정의
    • 데이터는 집합의 개념을 표현
    • 연산의 정의에는 연산 이름, 매개변수, 연산의 결과, 연산이 수행하는 기능을 기술

  • 추상 자료형(객체)객체 + 연산
    • 객체 : 추상 데이터 타입에 속하는 객체가 정의
    • 연산 : 객체들 사이의 연산이 정의 → 객체와 외부를 연결하는 인터페이스 역할

      추상 자료형 그림으로 보기
      추상 자료형


  • 예시

추상자료형