Algorithm

    [이코테] Chapter 06. 정렬 학습 정리

    기준에 따라 데이터를 정렬 💡 KEY POINT 정렬: 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 선택 정렬: O(N^2), 매번 가장 작은 것을 `선택`, 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번재 데이터와 바꾸는 과정을 반복 삽입 정렬: O(N^2), 특정한 데이터를 적절한 위치에 `삽입`, 데이터를 하나씩 확인하여, 각 데이터를 적절한 위치에 삽입하는 방식, 데이터가 거의 정렬되어 있을 때 효율적 퀵 정렬: 평균적으로 O(NlogN), 최악의 경우 O(N^2), 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방식 계수 정렬: O(N + K), 모든 데이터가 양의 정수인 상황에서 데이터의 범위가 한정..

    [이코테] Chapter 05. DFS/BFS 학습 정리

    꼭 필요한 자료구조 기초 💡 KEY POINT 탐색: 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 자료구조: 데이터를 표현하고 관리하고 처리하기 위한 구조 스택: 선입후출/후입선출 구조 큐: 선입선출 구조 재귀 함수: 자기자신을 다시 호출하는 함수, 수학의 점화식을 그대로 소스코드로 옮겨놓음 탐색 알고리즘 DFS/BFS 💡 KEY POINT 그래프: 노드(정점)와 간선으로 표현되며, 인접 행렬과 인접 리스트 2가지의 방식으로 표현할 수 있다. - 인접 행렬 방식: 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식모든 관계를 저장하므로 노드 개수가 많을수록 메모리가 불필요하게 낭비 - 인접 리스트 방식: 모든 노드에 연결된 노드에 대한 정보를 차례대로 연결하여 저장하는 방식연결된 정보만을 저장하..

    [이코테] Chapter 04. 구현 학습 정리

    아이디어를 코드로 바꾸는 구현 💡 KEY POINT 구현: 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념 이 책에서는 완전 탐색(모든 경우의 수를 주저없이 다 계산하는 해결 방법)과 시뮬레이션(문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행) 유형을 구현 유형으로 묶었다. 파이썬에서의 리스트 크기 제약 데이터의 개수(리스트의 길이) 메모리 사용량 1,000 약 4KB 1,000,000 약 4MB 10,000,000 약 40MB 파이썬으로 문제를 풀 때, 리스트를 여러 개 선언하고, 그 중에서 크기가 1,000만 이상인 리스트가 있다면 메모리 용량 제한으로 풀 수 없을 확률이 크다. 좌표에서 이동하는 경우, dx와 dy의 이동 방향 배열을 만들..

    [이코테] Chapter 03. 그리디 학습 정리

    당장 좋은 것만 선택하는 그리디 💡 KEY POINT 그리디 = 탐욕법 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 그리디 알고리즘 유형은 매우 다양하기 때문에 암기한다고 항상 잘 풀 수 있는 것이 아님. 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 ‘가장 큰 순서대로', ‘가장 작은 순서대로'와 같은 기준을 알게 모르게 제시해준다. → 이는 정렬 알고리즘과 같이 사용함 [실전 문제] 큰 수의 법칙 💡 KEY POINT 입력받은 수의 배열에서 가장 큰 수를 K만큼 더하고, 두 번째로 작은 수를 한 번 더하는 방식의 반복. 1. 입력받은 수를 역순으로 정렬 2. M만큼 반복하면서 K만큼 가장 큰 수를 더함 3. K만큼 가장 큰 수를 더했다..