본문 바로가기
IT/코딩 테스트 관련

<자료구조와 알고리즘> Chapter 1 시작 with Python

by 세계 최고의 AI Engineer_naknak 2023. 2. 17.

자료구조와 알고리즘을 왜 배워야 할까요???

 

이번 포스팅은 그 이유에 대해서 자세히 알아보고 python에 대한 기초적인 내용에 대해서 다뤄보도록 하겠습니다!

 

python에는 여러가지 자료형이 있습니다

 

문자열    "문자열입니다"

리스트    [1,2,3]

사전        {'a' : 6}

등이 있습니다.

 

그런데 자료구조를 왜 알아야 할까요?

기본적인 자료형을 가지고 다양한 문제를 효율적으로 해결하기는 어렵기 때문에

적합한 자료구조를 통해 이런 저런 문제들을 효율적으로 해결하기 위해서 입니다!

 

다음과 같은 코드가 있습니다.

import time

n = int(input("NUmber of elements: "))
haystack = [ k for k in range(n)]

print("Searching for the maximum value...")

ts = time.time()
maximum = max(haystack)
elapsed = time.time() - ts

print("Maximum element = %d, Elapsed time = %.2f %(maximum, elapsed))

시간 복잡도를 계산하기 위한 코드라고 생각하시면 됩니다

max 라는 함수에 걸리는 시간을 측정하기 위한 코드입니다.

그래서 어떤 리스트가 있을 때 최대치를 찾기 위해서는 어떻게 해야 가장 빠르게 최대치를 찾을 수 있을까요?

당연하게도 리스트 안에 있는 모든 값을 비교해야 가장 큰 값을 찾을 수 있겠죠!

리스트 안에 max 라는 함수가 필요로 하는 시간은 n 이라는 뜻입니다. 즉, 시간 복잡도는 n을 나타내는 거죠.

 

그러면 우리가 어떤 자료구조를 만들어서 사용하면 시간 복잡도를 줄일 수 있다는 것입니다.

어떻게? 이런 질문을 통해서 우리가 특정한 자료구조를 만들고 이를 통해서 시간 복잡도를 줄일 수 있다는 뜻입니다!!!

게다가 이미 선배 개발자분들이 효율적인 알고리즘과 자료구조를 개발해놓으셨기 때문에 이제 우리는 어떤 알고리즘과 자료구조를 가지고 어떤 문제를 효율적으로 풀 수 있느냐! 이걸 알아야 하고 그러려면 해당 자료구조나 알고리즘이 어떤 특성을 가지고 있는지를 파악하는 것이 중요합니다!

 

자료구조는 어떤 데이터가 있고 그 데이터에 대해서 행할 수 있는 연산을 할 수 있는 무엇인가의 구조라고 생각할 수 있습니다. 

 

알고리즘 : 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 / 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택이다

 

해결하고자 하는 문제에 따라 최적의 해법은 서로 다르다 ->> 이 선택을 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야합니다.

 

 

 

댓글