👨‍🎓
Today I Learned
  • Today-I-Learend
  • 🍎WWDC
    • Developer Tools
      • Testing in Xcode
    • UIKit
      • UIDiffableDataSource
        • [WWDC 19] Advances in UI Data Sources
      • [WWDC2019] Advances in CollectionView Layout
  • 자료구조
    • Heap 자료구조
  • Clean code
    • 네이밍
    • 주석과 포맷팅
    • 함수
    • 클래스
    • 에러 핸들링
    • 가독성 높이기
    • 객체지향
  • Network
    • RestAPI
  • Swift
    • DateType
    • ARC
    • Availablity
    • KeyPath
    • Network
    • Never타입
    • Result
    • Selector
    • 검증함수
    • 메타타입
    • 동시성 프로그래밍
    • 메모리 안전
    • 에러처리
    • 접근제어 (Access Control)
    • 제네릭
    • 주요 프로토콜
  • 알고리즘
    • 그래프
    • 기초 알고리즘
    • 누적합(Prefix)
    • 복잡도
    • 비트마스킹
  • 운영체제
    • 운영체제의 개요
    • 프로세스와 스레드
    • CPU 스케줄링
    • 프로세스 동기화
    • 교착상태
    • 07. 메모리
    • 08.가상 메모리
    • 입출력 장치
    • 파일 시스템
  • UIKit
    • UITableView xib으로 만들어보기
  • 🖊️정보 기록
    • 코코아팟 배포하는 방법
  • iOS Project
    • 채팅 앱 만들기
      • Trouble shooting
      • 1. 디자인
      • 2. AutoLayout
    • 날씨 조회 어플리케이션
      • Figma를 이용한 UI 설계
      • TableView 연결하기
      • Networking
    • MVC -> MVVM으로 구조 변경해보기
      • MVC
      • MVVM
    • OAuth Project
      • 로컬 호스트를 이용한 로그인 페이지 제작
      • Github의 OAuth App 설정
    • Rest API 프로젝트
      • UI설계 (with Figma)
      • Network Model
      • MVVM 구조 전환
  • 🕶️UIKit
    • Compositional Layout
Powered by GitBook
On this page
  1. 알고리즘

복잡도

Previous누적합(Prefix)Next비트마스킹

Last updated 2 years ago

목차

    • 시간복잡도(#시간복잡도)

    • 빅오표기법(#빅오표기법)

    • 공간복잡도(#공간복잡도)


시간복잡도

  • 시간복잡도는 입력크기에 대해 어떤 알고리즘이 실행되는데에 걸리는 시간이며, 주요 로직의 반복횟수를 중점으로 측정된다.

  • 실제 코드의 실행시간은 컴퓨터 사양 등 여러가지 요소에 영향을 받는다.

    • 이에 주어진 입력 크기를 기반으로, 어떤 로직이 몇 번 반복되었는지를 중점으로 계산한다.

  • 시간복잡도는 왜 있는것인가? → 효율적인 코드로 개선하는데 쓰이는 척도가 된다.

    • 코테 문제를 보고, 조금 더 작은 시간복잡도의 알고리즘을 써야겠구나를 인지할 수 있어야함! (생각의 기준점)

빅오 표기법

  • 복잡도에 가장 영향을 많이 끼치는 항의 상수 인자를 빼고, 나머지 항을 없애서 복잡도를 나타내는 표기법이다.

  • 상수 시간 시간복잡도 O(1)

    • 입력 크기와 상관 없이 일정한 시간 복잡도를 갖는 것이다.

    • 입출력 / 사칙연산 / 조건문 / 인덱스 참조 등이 해당한다.

  • 재귀함수의 시간복잡도

    • 함수 내에서 함수가 몇 번 호출했는지에 따라 결정된다. (n^3)

    var count = 0
    
    func solve(n: Int) {
        count += 1
        print(count)
    
        if n == 0 { return }
        for i in range 0..<3 {
            solve(n - 1)
        }
        return
    }
    
    solve(n)

공간복잡도

  • 입력 크기에 대해 어떠한 알고리즘이 실행되는데 필요한 메모리 공간이 양으로, 재귀함수로 인해 공간을 지속적으로 필요한 경우도 포함된다.

복잡도