IT 5분 잡학사전 – 6


7일

오늘 읽고 있는 것

  • 22화 – 데이터 구조와 알고리즘은 필수인가?
  • 에피소드 23 – 배열이란 무엇입니까?
  • 24화 – 알고리즘의 속도는 어떻게 표현하나요?
  • 25화 – 검색 알고리즘이란?

책에서 기억하고 싶은 것

22화 – 데이터 구조와 알고리즘은 필수인가?

  • 개발자가 되고자 하는 사람은 어느 시점에 데이터 구조와 알고리즘을 공부하고 이를 자신의 코드에 적용할 수 있어야 합니다!
    데이터 구조 및 알고리즘을 처리하면 코드를 보다 효율적으로 만들 수 있습니다.
    하지만 코딩 초기부터 데이터 구조와 알고리즘을 공부할 필요는 없다고 생각합니다.
  • 알고리즘은 컴퓨터에 주어진 일련의 명령입니다.
    일상에서 예를 찾는다면 아침에 학교 갈 준비를 할 때 하는 것이 바로 학교 준비 알고리즘이다.
  • 다른 컴퓨터 알고리즘
    가능한 한 빨리 목적지에 도착하는 방법을 알려주는 Pathfinder 알고리즘
    용량을 효율적으로 줄이고 이미지 손상을 최소화할 수 있는 압축 알고리즘
  • 데이터가 무작위로 저장된다면? 개발 효율이 크게 떨어집니다.
    예를 들어 택배 회사가 임의로 짐을 창고에 쌓아 놓으면 그 회사는 곧 망할 것입니다.
    고객의 상품을 찾는 데 시간이 오래 걸리기 때문입니다.
    이러한 이유로 데이터 구조를 공부해야 합니다!
  • 컴퓨터에도 동일하게 적용됩니다. 데이터는 보기 좋게 저장하는 것과는 별개로 쉽게 찾을 수 있도록 적절하게 저장해야 합니다.
  • 결론은 코드를 효율적으로 만드는 것입니다!

에피소드 23 – 배열이란 무엇입니까?

  • 프로그래밍을 시작하면 처음 접하게 될 데이터 구조인 배열을 보게 됩니다.
    그리고 배열의 속성에 대해 이야기하려면 배열에서 자주 발생하는 이벤트를 알아야 합니다.
    읽기, 검색, 추가 및 삭제 프로세스의 시간 복잡성.
  • 시간 복잡도는 프로그램이 작업을 얼마나 빨리 수행할 수 있는지 측정하는 방법입니다.
    예를 들어 어떤 코드는 5단계를 거쳐야 하고 다른 코드는 20단계를 거쳐야 한다면 어떻게 될까요?
    5단계만 필요한 코드는 더 빠르게 작동한다고 합니다.
  • 메모리는 컴퓨터의 저장 공간을 의미합니다.
    영구 메모리는 컴퓨터의 하드 드라이브와 같습니다.
    휘발성 메모리의 대표적인 예로는 RAM(Random Access Memory)이 있습니다.
  • 질서의 원칙
    1. 어레이는 RAM에서 행별로 공간을 차지합니다.
    2. 컴퓨터는 배열의 시작 주소와 길이를 알고 있습니다. 따라서 배열은 읽기가 매우 빠릅니다.
    3. 어레이는 앞에서 하나씩 차례로 채워져야 합니다. 따라서 어레이 삽입 및 삭제가 느립니다.

24화 – 알고리즘의 속도는 어떻게 표현하나요?

  • 시간 복잡도에 대해 이야기하면 알고리즘은 작업을 완료하기 위해 단계 수 N을 사용합니다.
    O(N), O(log N) 등으로 표현되며 이를 Big-O 표기법이라고 합니다.말해
  • 선형 검색 알고리즘은 배열을 처음부터 한 번에 하나씩 검색합니다.하다,
    그래서 어레이 크기가 증가함에 따라 검색 시간도 정비례하여 증가합니다.~라고 불리는
    배열의 길이가 N이라면 탐색횟수는 최대 N이다. 시간복잡도는 O(N)으로 표현된다.
def print_first(arr):
	print(arr(0))
  • 위의 코드는 중요하지 않습니다.
    여기서 집중해야 할 점은 이 함수가 배열의 길이에 관계없이 한 번만 실행되고 종료된다는 것입니다.
    함수가 첫 번째 데이터만 출력하기 때문입니다!
    따라서 이 함수의 시간 복잡도는 O(1)입니다. 그리고 때때로 “일정한 시간에 실행”된다고 합니다.
    상수 시간은 실행 횟수가 이미 고정되어 있음을 의미합니다.
def print_first(arr):
	print(arr(0))
    print(arr(0))
  • 많은 사람들은 위의 코드가 “시간 복잡도는 O(2)로 작성할 수 있습니다”라고 생각할 것입니다.
    그러나 Big-O는 이 경우에도 O(1)로 표현합니다.
    Big-O는 실행 단계에 영향을 미치는 요인만 보기 때문입니다.
    Big-O로서 이 함수는 배열의 길이에 관계없이 항상 같은 횟수만큼 실행되므로 1은 같은 의미로 사용됩니다.
def print_all(arr):
	for n in arr:
    	print(n)
  • 코드는 위에 있습니다 실행 시간은 배열의 길이에 따라 다릅니다. 배열 길이가 10이면 10번 출력되고, 100이면 100번 출력됩니다.
    이때 시간 복잡도는 O(N)입니다.
def print_twice(arr):
	for n in arr:
    	for x in arr:
        	print(x, n)
  • 시간복잡도가 다른 평방 시간있다 중첩 루프가 있는 경우 2차 시간이 발생합니다.
    배열 길이가 길수록 작업 속도가 2배 느려집니다.
    그리고 Big-O로 표현하면 O(N^2)입니다. 제곱 배수(N*N)로 표현됩니다.
  • Big-O 표기법은 개발자가 이해해야 할 중요한 개념입니다.

25화 – 검색 알고리즘이란?

  • 선형 검색 알고리즘은 가장 자연스러운 검색 방법입니다.당신은 말할 수 있습니다
    그래프로 표현했을 때 y = x의 모양보여주다
  • 이진 검색은 큰 배열에 대한 선형 검색보다 훨씬 더 나은 알고리즘입니다.
    그러나 이진 검색 알고리즘은 정렬된 데이터 배열에서만 사용할 수 있습니다.
  • 이진 검색은 배열의 중간을 검색하여 시작한 다음 해당 숫자가 검색 중인 숫자보다 큰지 작은지 테스트합니다.
    예를 들어 9를 찾으려면 3라운드에 9를 찾을 수 있습니다!
    1, 2, 3, 4, 5, 6, 7, 8, 9
    1, 2, 3, 4, 5, 6, 7, 8, 9
    1, 2, 3, 4, 5, 6, 7, 8일, 9
  • 선형 검색으로 9를 찾은 경우 검색은 9번 모두 시도했을 것입니다.
    이진 검색이 3라운드에서 9를 찾는 것이 더 빠르지 않습니까?
    이진 검색에서 배열 길이와 검색 시간은 y = log x의 그래프 모양을 나타냅니다.
  • 이진 검색은 데이터가 많을 때 빛을 발합니다.
    물론 데이터를 정렬해야 하는 부담도 있습니다!

오늘 독서 기분이 어떠세요?

  • 오늘 내용이 별거 아니라고 생각할 수도 있겠지만 개인적으로 굉장히 어려웠습니다.
    Python으로 시작했지만 네트워킹, Linux, Cloud, Docker 및 Kubernetes에 대해 진지하게 생각했습니다.
    올해 초에 알고리즘을 공부할 계획이었는데 아직 시작도 안 했어요.
    빨리 SAA-C03을 취득하고 취직하고 공부합시다.

질문이 있거나 잘 이해하지 못하셨나요?

  • 데이터 구조, 알고리즘 및 Big-O 표기법

오늘의 TIL 3 라인 요약

  • 데이터 구조와 알고리즘은 코드를 효율적으로 만드는 역할을 합니다.
  • Big-O 표기법은 이해해야 할 중요한 개념입니다.
  • 선형 및 이진 검색