목록Algorithm (3)
NOW OR NEVER
시간복잡도 빅오 표기법 Big-O notation 프로그램의 성능을 알기 위해 고려해야 하는 것들 : 입력으로 들어오는 데이터의 크기, 프로그램이 동작하는 하드웨어 성능, 프로그램을 실행 관리하는 운영체제 성능, 프로그램을 build하는 컴파일러 최적화, 프로그램이 thread 혹은 process 사용시 비동기 로직 고려 프로그램의 성능을 정확하게 파악하는 것은 불가능하므로 컴퓨터 과학자들은 대략적인 성능을 비교하기 위한 상대적인 표기법을 사용하기로 했다. 그것이 바로 빅오 표기법이다. 시간복잡도를 나타내기 위한 방법 중 하나 빅오 표기법의 상대적인 성능을 비교 O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(2^n) < O(n!) 상수시간
자료구조 메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다. 특성 상황에 유용하다는 것은 역으로 잘못 사용할 경우 메모리를 비효율적이며 느리고 불안정적으로 데이터를 처리할 수 있다는 것이다. 전산화 작업 예시(현실에 존재하는 영화 예매를 어떻게 컴퓨터로 옮길까?) 소프트웨어 개발자가 하는 일은 거의 전산화 작업이다. 현실에서 수행되는 프로세스: 고객은 어떤 영화를 볼지 고른다 -> 고객은 영화를 예매하기 위해 줄을 선다 -> 고객은 차례가 왔을 때 좌석을 선택한다. -> 고객은 최종적으로 돈을 지불한다. 위 프로세스를 소프트웨어에서 어떻게 처리하는가 영화 검색 : 빠르게 검색하고 자동완성 기능을 제공하기 ..
자료구조와 알고리즘이란? 프로그래밍은 요리와 비슷하다(요리 : 재료선택-도구선택-레시피-요리완성) 재료 : 데이터 도구 : 자료구조 레시피 : 알고리즘 요리 : 소프트웨어 요리사 : 개발자 요리를 먹는 손님 : 소프트웨어를 이용하는 이용자 자료구조 + 알고리즘 = 프로그램 자료구조 메모리를 효율적으로 사용하며 메모리를 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표이다. 구조들은 상황에 따라 유용하게 사용될 수 있도록 만들어져 있다. 그래서 어떤 상황에서는 느리고 불안정적일 수 있다. 상황에 맞는 올바른 자료구조를 선택할 수 있는 능력이 필요하다 stack, queue, graph, tree 등이 해당된다. 알고리즘 특정 문제를 효율적이고 빠르게 해결하는 것이 궁극적인 목표이다. 정해진 일련의 절..