자료구조란? / 알고리즘이란? / 시간복잡도(Time complexity) / 빅오 표기법

조영규의 블로그

2014. 10. 29. 02:47 from Engineering


Edit

Introducing. Data Structure

Data structure(자료구조)란?

컴퓨터 프로그램의 특징은 2가지로 크게 구별됨.

  1. 컴퓨터에 의해서 실행되는 명령들의 집합이란 점.
  2. 명령을 수행하기 위해 내부적으로 여러 자료를 저장한다는 점.

즉 프로그램이란 자료(데이터) 집합과 명령(알고리즘) 집합의 집합

효율적 자료구조라는 것.

  • 실행 시간 (Time complexity) 최소화.
  • 저장 공간 (Space complexity) 절약.

여기서 저장 공간의 절약이란 프로그램 실행에 필요한 메모리가 적다는 의미.
실행 시간이란 특정 기능을 하는데 걸리는 시간을 의미.

알고리즘이란?

컴퓨터 명령 자체의 효율성을 증가시키기 위한 절차나 방법.
효율적 알고리즘을 위해서는 좋은 자료구조가 선행되어 바탕이되어야.

자료의 종류. (형태에 따라)

  1. 단순 구조. (Primitive Data Structure & Base Data Structure)
    정수, 문자열, 실수
  2. 선형 구조. (Linear Data Structure)
    리스트, 스택, ,
    각각의 자료구조가 선형적으로 연결되있는 것.
    앞자료와 뒷자료가 1:1 관계.
  3. 비 선형 구조. (Non-linear Data Structure)
    계층 구조(Hierarchical Structure) 혹은 망 구조(Network Structure)을 가지는 경우.
    트리와 그래프가 포함. 앞뒤자료의 선후관계가 1:1이 아님.
  4. 파일 구조. (File Organization)
    보조 기억장치에 저장되는 파일에 대한 자료구조.
    메모리에 한번에 올릴(Loading) 수 없는 대용량의 자료를 대상으로 함.
    순차적 파일 구조(Sequential), 상대적 파일 구조(Relative), 색인 파일 구조(Indexed Sequential)다중키 파일 구조(Multi - key)등이 있다.

추상 자료형. (Abstract Data Type.)

정보은닉(Information Hiding)을 위해 사용. 중요한 정보만 나타내고 중요하지 않은 정보는 숨기는 방법.

자료와 자료형

자료와 자료형은 다르다! 뭔가 별거아닌데 충격적.

  • 자료 + 연산 = 자료형
  • data + operation = data type

    예) 정수 자료형 = 자료 (1,2,3,-1,-2등등) + 연산 (더하기, 빼기, 곱하기, 나누기, 나머지연산)

추상자료형

추상적으로 정의된 자료형. 미술에서 추상화는 사물을 사실적으로 그리지 않고 사물의 본질 혹은 두드러진 특성을 관념적으로 그리는 것 의미. 이와 유사하게 세부적이고 복잡한 것을 생략하고 중요한 것만 나타낸는 것.

예) 추상 자료형 콕 찌름 메세지(페이스북 콕 찌르기).

  1. 자료 3개.
    콕 찌른 시간.
    보내는 이.
    받는 이.

  2. 명령 :

이름 입력 출력 설명
변경() 찌름 메세지 p, 변경 보내는 이 s, 변경 받는 이 r, 변경 시간 t T/F 보내는 이와 받는 이 변경. 존재하지 않는 회원일 경우 실패
비교() 찌름 메세지 p T/F 두 메세지가 같은지 비교.

알고리즘

문제를 해결하기위한 절차.
5가지 특성을 필수로 가지게 됨.

  1. 입력(Input) : 입력되는 자료가 0개 이상.
  2. 출력(Output) : 1개 이상의 출력값 가져야.
  3. 명백성(Definitenness) : 각 명령어는 모호하지 않아야.
  4. 유한성(Finiteness) : 한정된 수 단계이후 종료되어야.
  5. 유효성(Effectiveness) : 모든 명령은 실행 가능해야.

알고리즘의 표현 방법.

  1. 자연어(Natural Language) : 사람이 사용하는 일반적 언어.
  2. 순서도(Flow Chart) : 알고리즘의 도식화
  3. 의사 코드(Psudo Code) : 가상의 프로그램 언어로 표현
  4. 프로그래밍 언어

알고리즘의 분석 기준

== 시간 복잡도와 공간 복잡도
현대의 컴퓨터 과학에서는 시간 복잡도를 공간 복잡도보다 대부분 우선시.

시간 복잡도 : 알고리즘 실행에 걸리는 시간.
실제 시간 측정 or 실행되는 명령문의 개수를 계산.
실제 시간 측정의 경우 간단하게 측정 가능하지만 컴퓨터 성능에 종속적. -객관성 낮음
그래서 실행되는 명령문 개수를 기준으로 판단 -->> N에관한 관계식으로 표현.

사실 일반적으로 시간 복잡도는 == O(빅 오;Big-Oh notation)다.

연습문제

(in 열혈강의 자료구조 - 프리렉)

  1. 선형 구조에 속하는 자료구조와 비 선형 구조에 속하는 자료구조를 각각 적어보세요.
    선형 구조 : 리스트, 스택, 큐, 덱
    비 선형 구조 : 트리 (Hierartchical Structure), 그래프 (Network Structure)
  2. 다음과 같은 연산자를 포함하는 MP3 플레이어의 추상 자료형을 설계해 보세요.

     Play, Stop, Pause, Add_MP3, Delete_MP3, Get_MP3_Count
    

    자료 : 곡 목록, 불리언 형 플래그(재생중인지), 현재 재생 중 곡 번호, 재생 시간
    연산 :
    play(mp3) : 0번부터 재생.
    stop(mp3) : 멈춤.
    pause(mp3) : 현재 재생중 곡번호, 재생시간에 데이터 넣고 플래그 off로.
    Add_MP3(mp3) : 곡 목록 추가
    Delete_MP3(mp3) : 현재곡 삭제
    Get_MP3_Count(mp3) : 곡 목록 사이즈 반환.

  3. 알고리즘의 정의는 무엇인가요? 그리고 알고리즘이 만족시켜야 할 5가지 특징은 무엇인가요?
    문제를 해결해 나가는 절차.
    입력, 출력, 명백성(Definiteness), 유한성(Finiteness), 유효성(Effectiveness)

  4. 다음과 같은 소스가 있다고 할 때, 다음 질문에 답해보세요.
    (1) n에 대한 시간 복잡도 함수를 구해보세요. 단, 덧셈, 곱셈, 나눗셈등 연산 횟수를 정확히 고려해야 합니다.

     2n *  3n + n + 1
    

    = 6n^2 + n + 1
    (2) 빅-오 표기법으로 시간 복잡도를 나타내 보세요.

     for(;i<n;i<-i+1){
         for(j<-0;j<n;j<-j+1){
             sum <- sum + j;
         }
     }
    

    = O(n^2)

  5. 다음 시간 복잡도 함수들을 빅-오 표기법으로 나타내 보세요.

     6n^3 + n! + 5n + 4 O
    

    = n!

     4nlogn + 5n^2 + 2 O
    

    = n^2

     2^n + n^3 + 5 O
    

    = 2^n

  6. 다음을 실행 시간이 적게 걸리는 순으로 나열하세요.

     O(n)  O(n^2)  O(n^3)  O(n!)  O(logn)  O(2^n)  O(nlogn)
    

    = O(logn) O(n) O(nlogn) O(n^2) O(n^3) O(2^n) O(n!)

스터디에서 토론한 것.

  • 데이터구조는 알고리즘의 일부다. 그리고 알고리즘은 데이터 구조의 일부다. 서로가 서로에게 영향을 미치는 관계라고 생각한다.
  • 알고리즘을 통해 데이터구조를 구현. 따라서 상호 보완적. 결국 서로는 서로와 동등한 지위를 갖는다 생각.
  • 프로그램 랭귀지로 알고리즘 구현시 명백성을 자동으로 포함시킬 수 있다. 당연히 컴퓨터에 시켜야 하니까.
  • 무한 동작한 행위는 알고리즘이라고 하지 않는다. 이게 좀 특이한 듯.
  • 형식이 있다고들 하는데 psudo code는 형식이 필요없다고 생각한다. 사람마다 다를 수 있지만 서로 알아볼 수 있으면 된 것 아닌가?
  • 자연어는 설명을 쭉 쓰는 건데 한 눈에 보기 힘들기에 별로 좋지 않을 수 있지만 전체적 흐름과 그 함수의 특성을 러프히 설명할 때 유용할 듯.
    • 그런데 그렇게 되면 알고리즘이 아니잖아. 명백성이 없어지니까.
  • 프로그래밍언어는 알고리즘 표현에서 당연한 것.
    • 당연하지 않아. psudo code순서도로 표현하고 그걸 정리해서 구현 할 수도 있어. 반드시 코딩을 해야하는 건 아닌듯.
%23Introducing.%20Data%20Structure%0A%23%23Data%20structure%28%uC790%uB8CC%uAD6C%uC870%29%uB780%3F%0A%0A%uCEF4%uD4E8%uD130%20%uD504%uB85C%uADF8%uB7A8%uC758%20%uD2B9%uC9D5%uC740%202%uAC00%uC9C0%uB85C%20%uD06C%uAC8C%20%uAD6C%uBCC4%uB428.%0A1.%20%uCEF4%uD4E8%uD130%uC5D0%20%uC758%uD574%uC11C%20%uC2E4%uD589%uB418%uB294%20%uBA85%uB839%uB4E4%uC758%20%uC9D1%uD569%uC774%uB780%20%uC810.%0A2.%20%uBA85%uB839%uC744%20%uC218%uD589%uD558%uAE30%20%uC704%uD574%20%uB0B4%uBD80%uC801%uC73C%uB85C%20%uC5EC%uB7EC%20%uC790%uB8CC%uB97C%20%uC800%uC7A5%uD55C%uB2E4%uB294%20%uC810.%0A%0A%uC989%20%uD504%uB85C%uADF8%uB7A8%uC774%uB780%20%60%uC790%uB8CC%28%uB370%uC774%uD130%29%60%20%uC9D1%uD569%uACFC%20%60%uBA85%uB839%28%uC54C%uACE0%uB9AC%uC998%29%60%20%uC9D1%uD569%uC758%20%uC9D1%uD569%0A%0A%23%23%uD6A8%uC728%uC801%20%uC790%uB8CC%uAD6C%uC870%uB77C%uB294%20%uAC83.%0A-%20%60%uC2E4%uD589%20%uC2DC%uAC04%20%28Time%20complexity%29%60%20%uCD5C%uC18C%uD654.%0A-%20%60%uC800%uC7A5%20%uACF5%uAC04%20%28Space%20complexity%29%60%20%uC808%uC57D.%0A%0A%uC5EC%uAE30%uC11C%20%uC800%uC7A5%20%uACF5%uAC04%uC758%20%uC808%uC57D%uC774%uB780%20%uD504%uB85C%uADF8%uB7A8%20%uC2E4%uD589%uC5D0%20%uD544%uC694%uD55C%20%uBA54%uBAA8%uB9AC%uAC00%20%uC801%uB2E4%uB294%20%uC758%uBBF8.%0A%uC2E4%uD589%20%uC2DC%uAC04%uC774%uB780%20%uD2B9%uC815%20%uAE30%uB2A5%uC744%20%uD558%uB294%uB370%20%uAC78%uB9AC%uB294%20%uC2DC%uAC04%uC744%20%uC758%uBBF8.%0A%0A%23%23%uC54C%uACE0%uB9AC%uC998%uC774%uB780%3F%0A%uCEF4%uD4E8%uD130%20%uBA85%uB839%20%uC790%uCCB4%uC758%20%uD6A8%uC728%uC131%uC744%20%uC99D%uAC00%uC2DC%uD0A4%uAE30%20%uC704%uD55C%20%uC808%uCC28%uB098%20%uBC29%uBC95.%0A%uD6A8%uC728%uC801%20%uC54C%uACE0%uB9AC%uC998%uC744%20%uC704%uD574%uC11C%uB294%20%uC88B%uC740%20%uC790%uB8CC%uAD6C%uC870%uAC00%20%uC120%uD589%uB418%uC5B4%20%uBC14%uD0D5%uC774%uB418%uC5B4%uC57C.%0A%0A%23%23%uC790%uB8CC%uC758%20%uC885%uB958.%20%28%uD615%uD0DC%uC5D0%20%uB530%uB77C%29%0A1.%20%uB2E8%uC21C%20%uAD6C%uC870.%20%28Primitive%20Data%20Structure%20%26%20%20Base%20Data%20Structure%29%0A%60%uC815%uC218%60%2C%20%60%uBB38%uC790%uC5F4%60%2C%20%60%uC2E4%uC218%60%20%uB4F1%0A2.%20%uC120%uD615%20%uAD6C%uC870.%20%28Linear%20Data%20Structure%29%0A%60%uB9AC%uC2A4%uD2B8%60%2C%20%60%uC2A4%uD0DD%60%2C%20%60%uD050%60%2C%20%60%uB371%60%0A%uAC01%uAC01%uC758%20%uC790%uB8CC%uAD6C%uC870%uAC00%20%uC120%uD615%uC801%uC73C%uB85C%20%uC5F0%uACB0%uB418%uC788%uB294%20%uAC83.%0A%uC55E%uC790%uB8CC%uC640%20%uB4B7%uC790%uB8CC%uAC00%20*1%3A1%20%uAD00%uACC4*.%0A3.%20%uBE44%20%uC120%uD615%20%uAD6C%uC870.%20%28Non-linear%20Data%20Structure%29%0A%60%uACC4%uCE35%20%uAD6C%uC870%28Hierarchical%20Structure%29%60%20%uD639%uC740%20%60%uB9DD%20%uAD6C%uC870%28Network%20%20Structure%29%60%uC744%20%uAC00%uC9C0%uB294%20%uACBD%uC6B0.%0A%uD2B8%uB9AC%uC640%20%uADF8%uB798%uD504%uAC00%20%uD3EC%uD568.%20%uC55E%uB4A4%uC790%uB8CC%uC758%20%uC120%uD6C4%uAD00%uACC4%uAC00%201%3A1%uC774%20%uC544%uB2D8.%0A4.%20%uD30C%uC77C%20%uAD6C%uC870.%20%28File%20Organization%29%0A%uBCF4%uC870%20%uAE30%uC5B5%uC7A5%uCE58%uC5D0%20%uC800%uC7A5%uB418%uB294%20%uD30C%uC77C%uC5D0%20%uB300%uD55C%20%uC790%uB8CC%uAD6C%uC870.%0A%uBA54%uBAA8%uB9AC%uC5D0%20%uD55C%uBC88%uC5D0%20%uC62C%uB9B4%28Loading%29%20%uC218%20%uC5C6%uB294%20%uB300%uC6A9%uB7C9%uC758%20%uC790%uB8CC%uB97C%20%uB300%uC0C1%uC73C%uB85C%20%uD568.%0A%60%uC21C%uCC28%uC801%20%uD30C%uC77C%20%uAD6C%uC870%28Sequential%29%60%2C%20%60%uC0C1%uB300%uC801%20%uD30C%uC77C%20%uAD6C%uC870%28Relative%29%60%2C%20%60%uC0C9%uC778%20%uD30C%uC77C%20%uAD6C%uC870%28Indexed%20Sequential%29%60%20%uBC0F%20%60%uB2E4%uC911%uD0A4%20%uD30C%uC77C%20%uAD6C%uC870%28Multi%20-%20key%29%60%uB4F1%uC774%20%uC788%uB2E4.%0A%0A%23%23%uCD94%uC0C1%20%uC790%uB8CC%uD615.%20%28Abstract%20Data%20Type.%29%0A%60%uC815%uBCF4%uC740%uB2C9%28Information%20Hiding%29%60%uC744%20%uC704%uD574%20%uC0AC%uC6A9.%20%uC911%uC694%uD55C%20%uC815%uBCF4%uB9CC%20%uB098%uD0C0%uB0B4%uACE0%20%uC911%uC694%uD558%uC9C0%20%uC54A%uC740%20%uC815%uBCF4%uB294%20%uC228%uAE30%uB294%20%uBC29%uBC95.%0A%0A%23%23%uC790%uB8CC%uC640%20%uC790%uB8CC%uD615%0A*%uC790%uB8CC%uC640%20%uC790%uB8CC%uD615%uC740%20%uB2E4%uB974%uB2E4%21%20%uBB54%uAC00%20%uBCC4%uAC70%uC544%uB2CC%uB370%20%uCDA9%uACA9%uC801.*%0A%0A-%20%20%20%uC790%uB8CC%20+%20%uC5F0%uC0B0%20%3D%20%uC790%uB8CC%uD615%0A-%20%20%20data%20+%20operation%20%3D%20data%20type%0A%0A%20%20%20%20%uC608%29%20%uC815%uC218%20%uC790%uB8CC%uD615%20%3D%20%uC790%uB8CC%20%281%2C2%2C3%2C-1%2C-2%uB4F1%uB4F1%29%20+%20%uC5F0%uC0B0%20%28%uB354%uD558%uAE30%2C%20%uBE7C%uAE30%2C%20%uACF1%uD558%uAE30%2C%20%uB098%uB204%uAE30%2C%20%uB098%uBA38%uC9C0%uC5F0%uC0B0%29%0A%0A%23%23%uCD94%uC0C1%uC790%uB8CC%uD615%0A%uCD94%uC0C1%uC801%uC73C%uB85C%20%uC815%uC758%uB41C%20%uC790%uB8CC%uD615.%20%uBBF8%uC220%uC5D0%uC11C%20%uCD94%uC0C1%uD654%uB294%20%uC0AC%uBB3C%uC744%20%uC0AC%uC2E4%uC801%uC73C%uB85C%20%uADF8%uB9AC%uC9C0%20%uC54A%uACE0%20%uC0AC%uBB3C%uC758%20%uBCF8%uC9C8%20%uD639%uC740%20%uB450%uB4DC%uB7EC%uC9C4%20%uD2B9%uC131%uC744%20%uAD00%uB150%uC801%uC73C%uB85C%20%uADF8%uB9AC%uB294%20%uAC83%20%uC758%uBBF8.%20%uC774%uC640%20%uC720%uC0AC%uD558%uAC8C%20%uC138%uBD80%uC801%uC774%uACE0%20%uBCF5%uC7A1%uD55C%20%uAC83%uC744%20%uC0DD%uB7B5%uD558%uACE0%20%uC911%uC694%uD55C%20%uAC83%uB9CC%20%uB098%uD0C0%uB0B8%uB294%20%uAC83.%0A%0A%uC608%29%20**%uCD94%uC0C1%20%uC790%uB8CC%uD615%20%uCF55%20%uCC0C%uB984%20%uBA54%uC138%uC9C0%28%uD398%uC774%uC2A4%uBD81%20%uCF55%20%uCC0C%uB974%uAE30%29.**%0A1.%20%uC790%uB8CC%203%uAC1C.%0A%uCF55%20%uCC0C%uB978%20%uC2DC%uAC04.%0A%uBCF4%uB0B4%uB294%20%uC774.%0A%uBC1B%uB294%20%uC774.%0A%0A2.%20%uBA85%uB839%20%3A%0A%0A%7C%uC774%uB984%7C%uC785%uB825%7C%uCD9C%uB825%7C%uC124%uBA85%7C%0A%7C%3A%7C%0A%7C%uBCC0%uACBD%28%29%7C%uCC0C%uB984%20%uBA54%uC138%uC9C0%20p%2C%20%uBCC0%uACBD%20%uBCF4%uB0B4%uB294%20%uC774%20s%2C%20%uBCC0%uACBD%20%uBC1B%uB294%20%uC774%20r%2C%20%uBCC0%uACBD%20%uC2DC%uAC04%20t%7CT/F%7C%uBCF4%uB0B4%uB294%20%uC774%uC640%20%uBC1B%uB294%20%uC774%20%uBCC0%uACBD.%20%uC874%uC7AC%uD558%uC9C0%20%uC54A%uB294%20%uD68C%uC6D0%uC77C%20%uACBD%uC6B0%20%uC2E4%uD328%7C%0A%7C%uBE44%uAD50%28%29%7C%uCC0C%uB984%20%uBA54%uC138%uC9C0%20p%7CT/F%7C%uB450%20%uBA54%uC138%uC9C0%uAC00%20%uAC19%uC740%uC9C0%20%uBE44%uAD50.%7C%0A%20%20%20%20%20%20%20%20%20%20%0A%23%23%uC54C%uACE0%uB9AC%uC998%0A%uBB38%uC81C%uB97C%20%uD574%uACB0%uD558%uAE30%uC704%uD55C%20%uC808%uCC28.%0A5%uAC00%uC9C0%20%uD2B9%uC131%uC744%20%uD544%uC218%uB85C%20%uAC00%uC9C0%uAC8C%20%uB428.%0A1.%20%60%uC785%uB825%28Input%29%60%20%3A%20%uC785%uB825%uB418%uB294%20%uC790%uB8CC%uAC00%200%uAC1C%20%uC774%uC0C1.%0A2.%20%60%uCD9C%uB825%28Output%29%60%20%3A%201%uAC1C%20%uC774%uC0C1%uC758%20%uCD9C%uB825%uAC12%20%uAC00%uC838%uC57C.%0A3.%20%60%uBA85%uBC31%uC131%28Definitenness%29%60%20%3A%20%uAC01%20%uBA85%uB839%uC5B4%uB294%20%uBAA8%uD638%uD558%uC9C0%20%uC54A%uC544%uC57C.%0A4.%20%60%uC720%uD55C%uC131%28Finiteness%29%60%20%3A%20%uD55C%uC815%uB41C%20%uC218%20%uB2E8%uACC4%uC774%uD6C4%20%uC885%uB8CC%uB418%uC5B4%uC57C.%0A5.%20%60%uC720%uD6A8%uC131%28Effectiveness%29%60%20%3A%20%uBAA8%uB4E0%20%uBA85%uB839%uC740%20%uC2E4%uD589%20%uAC00%uB2A5%uD574%uC57C.%0A%0A%23%23%uC54C%uACE0%uB9AC%uC998%uC758%20%uD45C%uD604%20%uBC29%uBC95.%0A1.%20%60%uC790%uC5F0%uC5B4%28Natural%20Language%29%60%20%3A%20%uC0AC%uB78C%uC774%20%uC0AC%uC6A9%uD558%uB294%20%uC77C%uBC18%uC801%20%uC5B8%uC5B4.%0A2.%20%60%uC21C%uC11C%uB3C4%28Flow%20Chart%29%60%20%3A%20%uC54C%uACE0%uB9AC%uC998%uC758%20%uB3C4%uC2DD%uD654%0A3.%20%60%uC758%uC0AC%20%uCF54%uB4DC%28Psudo%20Code%29%60%20%3A%20%uAC00%uC0C1%uC758%20%uD504%uB85C%uADF8%uB7A8%20%uC5B8%uC5B4%uB85C%20%uD45C%uD604%0A4.%20%60%uD504%uB85C%uADF8%uB798%uBC0D%20%uC5B8%uC5B4%60%0A%0A%23%23%uC54C%uACE0%uB9AC%uC998%uC758%20%uBD84%uC11D%20%uAE30%uC900%0A***%20%3D%3D%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%uC640%20%uACF5%uAC04%20%uBCF5%uC7A1%uB3C4***%0A%20%20%20%20%uD604%uB300%uC758%20%uCEF4%uD4E8%uD130%20%uACFC%uD559%uC5D0%uC11C%uB294%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%uB97C%20%uACF5%uAC04%20%uBCF5%uC7A1%uB3C4%uBCF4%uB2E4%20%uB300%uBD80%uBD84%20%uC6B0%uC120%uC2DC.%0A%0A%60%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%60%20%3A%20%uC54C%uACE0%uB9AC%uC998%20%uC2E4%uD589%uC5D0%20%uAC78%uB9AC%uB294%20%uC2DC%uAC04.%0A%20%20%20%20%20%20%20%20%uC2E4%uC81C%20%uC2DC%uAC04%20%uCE21%uC815%20or%20%uC2E4%uD589%uB418%uB294%20%uBA85%uB839%uBB38%uC758%20%uAC1C%uC218%uB97C%20%uACC4%uC0B0.%0A%20%20%20%20%20%20%20%20%uC2E4%uC81C%20%uC2DC%uAC04%20%uCE21%uC815%uC758%20%uACBD%uC6B0%20%uAC04%uB2E8%uD558%uAC8C%20%uCE21%uC815%20%uAC00%uB2A5%uD558%uC9C0%uB9CC%20%uCEF4%uD4E8%uD130%20%uC131%uB2A5%uC5D0%20%uC885%uC18D%uC801.%20-%uAC1D%uAD00%uC131%20%uB0AE%uC74C%0A%20%20%20%20%20%20%20%20%uADF8%uB798%uC11C%20%uC2E4%uD589%uB418%uB294%20%uBA85%uB839%uBB38%20%uAC1C%uC218%uB97C%20%uAE30%uC900%uC73C%uB85C%20%uD310%uB2E8%20--%3E%3E%20N%uC5D0%uAD00%uD55C%20%uAD00%uACC4%uC2DD%uC73C%uB85C%20%uD45C%uD604.%0A%0A***%uC0AC%uC2E4%20%uC77C%uBC18%uC801%uC73C%uB85C%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%uB294%20%3D%3D%20O%28%uBE45%20%uC624%3BBig-Oh%20notation%29%uB2E4.***%0A%0A%0A%23%23%uC5F0%uC2B5%uBB38%uC81C%0A***%28in%20%uC5F4%uD608%uAC15%uC758%20%uC790%uB8CC%uAD6C%uC870%20-%20%uD504%uB9AC%uB809%29***%0A%0A1.%20**%uC120%uD615%20%uAD6C%uC870%uC5D0%20%uC18D%uD558%uB294%20%uC790%uB8CC%uAD6C%uC870%uC640%20%uBE44%20%uC120%uD615%20%uAD6C%uC870%uC5D0%20%uC18D%uD558%uB294%20%uC790%uB8CC%uAD6C%uC870%uB97C%20%uAC01%uAC01%20%uC801%uC5B4%uBCF4%uC138%uC694.**%0A%uC120%uD615%20%uAD6C%uC870%20%3A%20%uB9AC%uC2A4%uD2B8%2C%20%uC2A4%uD0DD%2C%20%uD050%2C%20%uB371%0A%uBE44%20%uC120%uD615%20%uAD6C%uC870%20%3A%20%uD2B8%uB9AC%20%28Hierartchical%20Structure%29%2C%20%uADF8%uB798%uD504%20%28Network%20Structure%29%0A2.%20**%uB2E4%uC74C%uACFC%20%uAC19%uC740%20%uC5F0%uC0B0%uC790%uB97C%20%uD3EC%uD568%uD558%uB294%20MP3%20%uD50C%uB808%uC774%uC5B4%uC758%20%uCD94%uC0C1%20%uC790%uB8CC%uD615%uC744%20%uC124%uACC4%uD574%20%uBCF4%uC138%uC694.**%0A%0A%20%20%20%20%20%20%20%20Play%2C%20Stop%2C%20Pause%2C%20Add_MP3%2C%20Delete_MP3%2C%20Get_MP3_Count%0A*%uC790%uB8CC*%20%3A%20%uACE1%20%uBAA9%uB85D%2C%20%uBD88%uB9AC%uC5B8%20%uD615%20%uD50C%uB798%uADF8%28%uC7AC%uC0DD%uC911%uC778%uC9C0%29%2C%20%uD604%uC7AC%20%uC7AC%uC0DD%20%uC911%20%uACE1%20%uBC88%uD638%2C%20%20%uC7AC%uC0DD%20%uC2DC%uAC04%0A*%uC5F0%uC0B0*%20%3A%0Aplay%28mp3%29%20%3A%200%uBC88%uBD80%uD130%20%uC7AC%uC0DD.%0Astop%28mp3%29%20%3A%20%uBA48%uCDA4.%0Apause%28mp3%29%20%3A%20%uD604%uC7AC%20%uC7AC%uC0DD%uC911%20%uACE1%uBC88%uD638%2C%20%uC7AC%uC0DD%uC2DC%uAC04%uC5D0%20%uB370%uC774%uD130%20%uB123%uACE0%20%uD50C%uB798%uADF8%20off%uB85C.%0AAdd_MP3%28mp3%29%20%3A%20%uACE1%20%uBAA9%uB85D%20%uCD94%uAC00%0ADelete_MP3%28mp3%29%20%3A%20%uD604%uC7AC%uACE1%20%uC0AD%uC81C%0AGet_MP3_Count%28mp3%29%20%3A%20%uACE1%20%uBAA9%uB85D%20%uC0AC%uC774%uC988%20%uBC18%uD658.%0A%0A3.%20**%uC54C%uACE0%uB9AC%uC998%uC758%20%uC815%uC758%uB294%20%uBB34%uC5C7%uC778%uAC00%uC694%3F%20%uADF8%uB9AC%uACE0%20%uC54C%uACE0%uB9AC%uC998%uC774%20%uB9CC%uC871%uC2DC%uCF1C%uC57C%20%uD560%205%uAC00%uC9C0%20%uD2B9%uC9D5%uC740%20%uBB34%uC5C7%uC778%uAC00%uC694%3F**%0A%uBB38%uC81C%uB97C%20%uD574%uACB0%uD574%20%uB098%uAC00%uB294%20%uC808%uCC28.%0A%uC785%uB825%2C%20%uCD9C%uB825%2C%20%uBA85%uBC31%uC131%28Definiteness%29%2C%20%uC720%uD55C%uC131%28Finiteness%29%2C%20%uC720%uD6A8%uC131%28Effectiveness%29%0A%0A4.%20%uB2E4%uC74C%uACFC%20%uAC19%uC740%20%uC18C%uC2A4%uAC00%20%uC788%uB2E4%uACE0%20%uD560%20%uB54C%2C%20%uB2E4%uC74C%20%uC9C8%uBB38%uC5D0%20%uB2F5%uD574%uBCF4%uC138%uC694.%0A%281%29%20**n%uC5D0%20%uB300%uD55C%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%20%uD568%uC218%uB97C%20%uAD6C%uD574%uBCF4%uC138%uC694.%20%uB2E8%2C%20%uB367%uC148%2C%20%uACF1%uC148%2C%20%uB098%uB217%uC148%uB4F1%20%uC5F0%uC0B0%20%uD69F%uC218%uB97C%20%uC815%uD655%uD788%20%uACE0%uB824%uD574%uC57C%20%uD569%uB2C8%uB2E4.**%0A%20%20%20%20%20%20%20%202n%20*%20%203n%20+%20n%20+%201%0A%3D%206n%5E2%20+%20n%20+%201%0A%282%29%20**%uBE45-%uC624%20%uD45C%uAE30%uBC95%uC73C%uB85C%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%uB97C%20%uB098%uD0C0%uB0B4%20%uBCF4%uC138%uC694.**%0A%0A%20%20%20%20%20%20%20%20for%28%3Bi%3Cn%3Bi%3C-i+1%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%28j%3C-0%3Bj%3Cn%3Bj%3C-j+1%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sum%20%3C-%20sum%20+%20j%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%3D%20O%28n%5E2%29%0A5.%20**%uB2E4%uC74C%20%uC2DC%uAC04%20%uBCF5%uC7A1%uB3C4%20%uD568%uC218%uB4E4%uC744%20%uBE45-%uC624%20%uD45C%uAE30%uBC95%uC73C%uB85C%20%uB098%uD0C0%uB0B4%20%uBCF4%uC138%uC694.**%0A%0A%20%20%20%20%20%20%20%206n%5E3%20+%20n%21%20+%205n%20+%204%20O%0A%20%20%20%20%3D%20n%21%0A%20%20%20%20%20%20%20%204nlogn%20+%205n%5E2%20+%202%20O%0A%20%20%20%20%3D%20n%5E2%0A%20%20%20%20%20%20%20%202%5En%20+%20n%5E3%20+%205%20O%0A%20%20%20%20%3D%202%5En%20%20%20%0A6.%20**%uB2E4%uC74C%uC744%20%uC2E4%uD589%20%uC2DC%uAC04%uC774%20%uC801%uAC8C%20%uAC78%uB9AC%uB294%20%uC21C%uC73C%uB85C%20%uB098%uC5F4%uD558%uC138%uC694.**%0A%0A%20%20%20%20%20%20%20%20O%28n%29%20%20O%28n%5E2%29%20%20O%28n%5E3%29%20%20O%28n%21%29%20%20O%28logn%29%20%20O%282%5En%29%20%20O%28nlogn%29%0A%3D%20O%28logn%29%20%20O%28n%29%20%20O%28nlogn%29%20%20O%28n%5E2%29%20%20O%28n%5E3%29%20%20O%282%5En%29%20%20%20O%28n%21%29%0A%0A%23%23%uC2A4%uD130%uB514%uC5D0%uC11C%20%uD1A0%uB860%uD55C%20%uAC83.%0A%0A-%20%uB370%uC774%uD130%uAD6C%uC870%uB294%20%uC54C%uACE0%uB9AC%uC998%uC758%20%uC77C%uBD80%uB2E4.%20%uADF8%uB9AC%uACE0%20%uC54C%uACE0%uB9AC%uC998%uC740%20%uB370%uC774%uD130%20%uAD6C%uC870%uC758%20%uC77C%uBD80%uB2E4.%20%uC11C%uB85C%uAC00%20%uC11C%uB85C%uC5D0%uAC8C%20%uC601%uD5A5%uC744%20%uBBF8%uCE58%uB294%20%uAD00%uACC4%uB77C%uACE0%20%uC0DD%uAC01%uD55C%uB2E4.%0A-%20%uC54C%uACE0%uB9AC%uC998%uC744%20%uD1B5%uD574%20%uB370%uC774%uD130%uAD6C%uC870%uB97C%20%uAD6C%uD604.%20%uB530%uB77C%uC11C%20%uC0C1%uD638%20%uBCF4%uC644%uC801.%20%uACB0%uAD6D%20%uC11C%uB85C%uB294%20%uC11C%uB85C%uC640%20%uB3D9%uB4F1%uD55C%20%uC9C0%uC704%uB97C%20%uAC16%uB294%uB2E4%20%uC0DD%uAC01.%0A-%20%uD504%uB85C%uADF8%uB7A8%20%uB7AD%uADC0%uC9C0%uB85C%20%uC54C%uACE0%uB9AC%uC998%20%uAD6C%uD604%uC2DC%20%uBA85%uBC31%uC131%uC744%20%uC790%uB3D9%uC73C%uB85C%20%uD3EC%uD568%uC2DC%uD0AC%20%uC218%20%uC788%uB2E4.%20%uB2F9%uC5F0%uD788%20%uCEF4%uD4E8%uD130%uC5D0%20%uC2DC%uCF1C%uC57C%20%uD558%uB2C8%uAE4C.%0A-%20%uBB34%uD55C%20%uB3D9%uC791%uD55C%20%uD589%uC704%uB294%20%uC54C%uACE0%uB9AC%uC998%uC774%uB77C%uACE0%20%uD558%uC9C0%20%uC54A%uB294%uB2E4.%20%uC774%uAC8C%20%uC880%20%uD2B9%uC774%uD55C%20%uB4EF.%0A-%20%uD615%uC2DD%uC774%20%uC788%uB2E4%uACE0%uB4E4%20%uD558%uB294%uB370%20%60psudo%20code%60%uB294%20%uD615%uC2DD%uC774%20%uD544%uC694%uC5C6%uB2E4%uACE0%20%uC0DD%uAC01%uD55C%uB2E4.%20%uC0AC%uB78C%uB9C8%uB2E4%20%uB2E4%uB97C%20%uC218%20%uC788%uC9C0%uB9CC%20%uC11C%uB85C%20%uC54C%uC544%uBCFC%20%uC218%20%uC788%uC73C%uBA74%20%uB41C%20%uAC83%20%uC544%uB2CC%uAC00%3F%0A-%20%uC790%uC5F0%uC5B4%uB294%20%uC124%uBA85%uC744%20%uCB49%20%uC4F0%uB294%20%uAC74%uB370%20%uD55C%20%uB208%uC5D0%20%uBCF4%uAE30%20%uD798%uB4E4%uAE30%uC5D0%20%uBCC4%uB85C%20%uC88B%uC9C0%20%uC54A%uC744%20%uC218%20%uC788%uC9C0%uB9CC%20%uC804%uCCB4%uC801%20%uD750%uB984%uACFC%20%uADF8%20%uD568%uC218%uC758%20%uD2B9%uC131%uC744%20%uB7EC%uD504%uD788%20%uC124%uBA85%uD560%20%uB54C%20%uC720%uC6A9%uD560%20%uB4EF.%0A%20%20%20%20-%20%uADF8%uB7F0%uB370%20%uADF8%uB807%uAC8C%20%uB418%uBA74%20%uC54C%uACE0%uB9AC%uC998%uC774%20%uC544%uB2C8%uC796%uC544.%20%uBA85%uBC31%uC131%uC774%20%uC5C6%uC5B4%uC9C0%uB2C8%uAE4C.%0A-%20%uD504%uB85C%uADF8%uB798%uBC0D%uC5B8%uC5B4%uB294%20%uC54C%uACE0%uB9AC%uC998%20%uD45C%uD604%uC5D0%uC11C%20%uB2F9%uC5F0%uD55C%20%uAC83.%0A%20%20%20%20-%20%uB2F9%uC5F0%uD558%uC9C0%20%uC54A%uC544.%20%60psudo%20code%60%uB098%20%60%uC21C%uC11C%uB3C4%60%uB85C%20%uD45C%uD604%uD558%uACE0%20%uADF8%uAC78%20%uC815%uB9AC%uD574%uC11C%20%uAD6C%uD604%20%uD560%20%uC218%uB3C4%20%uC788%uC5B4.%20%uBC18%uB4DC%uC2DC%20%uCF54%uB529%uC744%20%uD574%uC57C%uD558%uB294%20%uAC74%20%uC544%uB2CC%uB4EF.%0A%0A%0A%0A%0A%0A

comments powered by Disqus
태그, 트랙백, 검색 상자 토글