티스토리 뷰

우리가 자료구조와 알고리즘을 이해할때 두가지 방식이 있다.


1.코드레벨로 내려가서 구현에 초점을 맞춘 이해

2.어떤식으로 동작하는지에 대해 도식화 하는 방법


개인적으로 1번방식보다는 2번방식이 더 좋다고 생각한다 그 이유는 어차피 내가 지금 쓰려고 하는 알고리즘 및 자료구조는 이미 검증된 라이브러리로 누군가 완벽하고 쓸만하도록 만들어 놨다. 

우리가 할일은 어떤 자료구조와 어떤 알고리즘이 어떤 상황에서 가장 효율적인가 비교할수 있고 상황에 맞는 것을 가져다 쓸수 있는 능력을 길러야 한다.


2학년 자료구조와 알고리즘 수업을 들을때 교수님들이 항상 코드레벨보다는 동작 과정에 대해 초점을 맞추고 수업을 하셨는데 그때는 왜 그런 방식인지 몰랐지만 지금 와서 다시 생각해보면 아주 좋은 방식으로 수업을 하셨다고 생각이 든다.


자료구조와 알고리즘을 한마디로 요약하면 어떤 상자더미들이 있는데 그속에 있는 머그컵을 찾는 방법이 알고리즘이고 상자더미가 쌓여있는방식이 자료구조이다.

(트리모양,옆으로 일자, 위로 일자 등등..)

즉 알고리즘은 자료구조에 의존하며 자료구조에 따라서 알고리즘은 바뀔수 있다.


또한 알고리즘의 성능을 평가할때는 최악의 경우에 비교연산 횟수가 몇번 진행 되는가로 평가를 하게 된다.


평균적인 경우로 알고리즘의 성능을 평가 하지 않는 이유는 평균이 어떤 경우인지 알기 어렵기 때문이다. 

즉, 일반적인 경우 계산하기 쉬운 최악의 경우를 기준으로 알고리즘의 성능을 평가해야 한다.


빅오 -> 데이터 수의 증가에 따른 연산횟수의 증가 패턴을 나타내는 표기법


정확히 다시 말하면

빅오 -> 데이터 수의 증가에 따른 연산횟수 증가율의 상한선을 표현한 것  

(빅오가 n제곱이다 -> 데이터 수 증가에 따른 연산횟수 증가율의 변화가 엔제곱패턴을 벗어나지 못한다.)





'알고리즘' 카테고리의 다른 글

2583번 영역 구하기 BFS 큐 벡터  (0) 2017.08.15
11403번 경로찾기 DFS 재귀  (0) 2017.08.15
1049번 기타줄  (0) 2017.08.10
1021번 회전하는 큐  (0) 2017.08.07
1022번 소용돌이 예쁘게 출력하기  (0) 2017.08.07
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함