알고리즘 공부를 시작하게 된 이유
코드카타를 시작하면서 다양한 알고리즘 문제를 마주했다. 특히 풀지 못한 문제들을 찾아보면서 자료구조와 알고리즘에 대한 글들을 찾아보기 시작했다. 처음에는 무슨 말인지 이해하지 못할 정도로 전문적인 용어가 많았다. 그렇기에 체계적으로 알고리즘과 자료구조에 대해 공부해보기로 했다. 지금은 문제를 이해하는 것도 버겁지만 이젠 익숙하다. 알고리즘도 즐겁게 함께 할 수 있게 시작해본다.
자료구조가 사용하는 네가지 기본 방법
- 읽기: 읽기는 자료 구조 내 특정 위치를 찾아보는 것
- 검색: 검색은 자료 구조 내에서 특정 값을 찾아내는 것
- 삽입: 자료 구조에 새로운 값을 추가하는 것
- 삭제: 자료 구조에서 값을 제거하는 것
연산의 "빠름"을 측정하는 기준?
- 컴퓨터는 하드웨어의 성능에 따라 문제를 해결하는 속도가 다르다
- 그렇기에 시간이 기준이 아닌 얼마나 많은 단계를 지나는가를 기준으로 한다.
- 이러한 연산의 속도 측정을 시간 복잡도 측정으로 알려졌다.
- 관련된 용어로는 속도, 시간 복잡도, 효율성, 성능이라는 용어가 있다.
읽기
- 컴퓨터 메모리의 각 셀에는 특정 주소가 있다.
- 컴퓨터는 모든 메모리 주소에 한번에 갈 수 있다.
검색
- 일반적으로 검색되는 0부터 끝까지 찾아가는 검색 방법을 선형 검색이라고 한다.
- 다른 방식의 진행되는 검색에 따라 다른 이름을 가진 검색이 가능하다.
삽입
- 배열에 새 데이터를 삽입하는 연산은 배열의 어디에 데이터를 삽입하는가에 따라 효율성이 다르다.
- 마지막에 삽입하면 하나의 데이터만 추가하면 된다
- 하지만 첫번째에 삽입되면 나머지 데이터들을 하나의 셀 단위로 밀어내고 삽입해야 한다.
삭제
알고리즘 시작하셨군요..! 화이팅입니다!