자료구조와 알고리즘을 왜 배워야 할까요???
이번 포스팅은 그 이유에 대해서 자세히 알아보고 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을 나타내는 거죠.
그러면 우리가 어떤 자료구조를 만들어서 사용하면 시간 복잡도를 줄일 수 있다는 것입니다.
어떻게? 이런 질문을 통해서 우리가 특정한 자료구조를 만들고 이를 통해서 시간 복잡도를 줄일 수 있다는 뜻입니다!!!
게다가 이미 선배 개발자분들이 효율적인 알고리즘과 자료구조를 개발해놓으셨기 때문에 이제 우리는 어떤 알고리즘과 자료구조를 가지고 어떤 문제를 효율적으로 풀 수 있느냐! 이걸 알아야 하고 그러려면 해당 자료구조나 알고리즘이 어떤 특성을 가지고 있는지를 파악하는 것이 중요합니다!
자료구조는 어떤 데이터가 있고 그 데이터에 대해서 행할 수 있는 연산을 할 수 있는 무엇인가의 구조라고 생각할 수 있습니다.
알고리즘 : 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 / 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택이다
해결하고자 하는 문제에 따라 최적의 해법은 서로 다르다 ->> 이 선택을 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야합니다.
'IT > 코딩 테스트 관련' 카테고리의 다른 글
[구름톤 챌린지] 1주차 2일차 문제 "프로젝트 매니징" (0) | 2023.08.16 |
---|---|
<자료구조와 알고리즘> 정렬 with Python (0) | 2023.02.20 |
<여름 인턴 준비> 코딩 테스트 (0) | 2023.02.15 |
댓글