본문 바로가기
반응형
[Roadmap] 2. Algorithm 1. Data Structure && Algorithm- [교재] Introduction To Algorithm- [교재] 이것이 자료구조+알고리즘이다 with C 언어- [교재] 코딩 테스트를 위한 자료 구조와 알고리즘 with C++- [강의] C로 쉽게 풀어쓴 자료구조 2. Coding Test- [교재] 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략- [교재] 코딩 테스트 합격자 되기(파이썬 편)- [교재] 코딩 테스트 합격자 되기(C++)- [교재] 바킹독의 실전 알고리즘(C++)- [강의] 바킹독의 실전 알고리즘 강의(C++)- [강의] 이것이 취업을 위한 코딩 테스트다 with 파이썬- [강의] 코딩테스트 필수 알고리즘(python)- [사이트] 백준 온라인 저지 / Solved.ac- .. 2024. 10. 5.
[Python] 자료구조: 리스트, 딕셔너리, 튜플, 셋 1. 리스트1.1 리스트란?- 리스트는 값들의 묶음 1.2 메서드# 리스트 생성data = list()data = []# 리스트 초기화data = [val1, ...]data = [val1] * ndata = [i for i in range(n)]# 값 확인data[index]# 값 변경data[index] = val# 값 추가:data.append(val)# 값 추가: 리스트 괄호 해제 후 결합data.extend(val)# 값 삭제del data[index]# 값 제거data.remove(val)2. 딕셔너리2.1 딕셔너리란?- 키 중복 불가- 키와 값의 쌍으로 이루어진 데이터들의 집합2.2 메서드 # 딕셔너리 생성data = dict()data = {}# 딕셔너리 초기화data = {"key1": .. 2024. 8. 13.
[자료구조] 스택 스택 정의 스택 ADT 스택 구현 프로그램 언어별 메서드- C언어 - C++: STL의 stack 사용/* 스택 STL 사용 */#include // 스택 생성stack stack;// 값 추가stack.push(data);// 값 제거stack.pop();// 값 확인stack.top();// 크기 확인stack.size();// 비어있는지 확인stack.empty(); - C#: Stack 클래스 사용/* Stack 클래스 사용 */using System.Collections;// 스택 생성Stack stack = new Stack();// 값 추가stack.Push(data);// 값 제거stack.Pop();// 값 확인stack.Peek();// 요소 개수 반환stack.Count;// 모든 요.. 2024. 8. 9.
[로드맵] 컴퓨터공학: 기본 이론 자료구조/알고리즘- PCCP- 자료구조/알고리즘: Introduction To Algorithms데이터베이스/SQL- 국가공인자격증: SQLD/SQLP- 데이터베이스: 데이터베이스 시스템(7판)네트워크/소켓프로그래밍- 국가공인자격증: 네트워크관리사 2급- 네트워크: 컴퓨터 네트워킹 하향식 접근- 소켓프로그래밍: 윤성우의 열혈 TCP/IP 소켓 프로그래밍운영체제/시스템프로그래밍- 국가공인자격증: 리눅스마스터 2급- 운영체제: 운영체제(10판)- 시스템프로그래밍데이터 분석- 국가공인자격증: ADsP/ADP- 국가기술자격증: 빅데이터분석기사- 확률과 통계: 이공계생을 위한 확률과 통계- 머신러닝: 패턴인식과 머신러닝/단단한 머신러닝- 인공지능: 기계학습/신경망과 심층학습/심층학습/단단한 강화학습/단단한 심층강.. 2024. 8. 8.
[C++로 배우는 알고리즘과 자료구조] Day 29: 분할 정복 기법 분할 정복 기법 (Divide and Conquer)분할 정복 기법은 문제를 더 작은 부분 문제로 나누어 해결한 후, 그 결과를 결합하여 전체 문제의 해를 구하는 알고리즘 설계 기법입니다. 대표적인 예로 합병 정렬(Merge Sort)과 퀵 정렬(Quick Sort)이 있습니다.분할 정복 기법의 주요 단계:분할 (Divide): 문제를 더 작은 부분 문제로 나눕니다.정복 (Conquer): 각 부분 문제를 재귀적으로 해결합니다.결합 (Combine): 부분 문제의 해를 결합하여 전체 문제의 해를 구합니다.대표적인 분할 정복 알고리즘: 합병 정렬합병 정렬 (Merge Sort)합병 정렬은 분할 정복 기법을 사용하는 효율적인 정렬 알고리즘입니다. 배열을 반으로 나누어 각각을 정렬한 후, 두 개의 정렬된 배열.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조 심화] Day 29: 병렬 알고리즘 (Parallel Algorithms) 병렬 알고리즘 (Parallel Algorithms)병렬 알고리즘은 여러 프로세서가 동시에 작업을 수행하여 문제를 해결하는 알고리즘입니다. 이러한 알고리즘은 대규모 데이터 처리 및 고성능 컴퓨팅에 매우 유용합니다. 병렬 알고리즘을 설계할 때는 데이터 병렬성, 작업 병렬성, 동기화 및 통신 비용 등을 고려해야 합니다.병렬 알고리즘의 주요 기법데이터 병렬성: 동일한 작업을 여러 데이터에 동시에 적용합니다.작업 병렬성: 여러 작업을 동시에 수행합니다.동기화: 작업 간의 일관성을 유지하기 위해 동기화 메커니즘을 사용합니다.문제 예시: 병렬 퀵 정렬퀵 정렬은 분할 정복 알고리즘으로, 병렬화가 가능한 부분이 많습니다. 병렬 퀵 정렬은 배열을 분할한 후, 각 분할된 부분 배열을 별도의 스레드에서 정렬하여 병렬 처리를.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조] Day 30: 알고리즘 문제 해결 및 코딩 테스트 준비 알고리즘 문제 해결 및 코딩 테스트 준비코딩 테스트는 프로그래밍 실력을 검증하기 위한 중요한 과정입니다. 알고리즘과 자료구조를 잘 이해하고, 다양한 문제를 해결할 수 있는 능력을 갖추는 것이 중요합니다. 오늘은 알고리즘 문제 해결 및 코딩 테스트 준비에 필요한 몇 가지 팁과 예제를 다루겠습니다.코딩 테스트 준비 팁기본기 다지기:알고리즘과 자료구조의 기본 개념을 확실히 이해합니다.배열, 문자열, 스택, 큐, 링크드 리스트, 해시 테이블, 트리, 그래프 등을 학습합니다.다양한 문제 풀기:다양한 알고리즘 문제를 풀어보며 문제 해결 능력을 키웁니다.LeetCode, HackerRank, CodeSignal, Programmers와 같은 온라인 플랫폼에서 문제를 풉니다.시간 복잡도와 공간 복잡도 이해:알고리즘의 .. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조 심화] Day 30: 양자 알고리즘 (Quantum Algorithms) 소개 양자 알고리즘 (Quantum Algorithms)양자 알고리즘은 양자 컴퓨팅의 원리를 사용하여 문제를 해결하는 알고리즘입니다. 양자 컴퓨터는 큐비트(Quantum bit)를 사용하여 정보를 처리하며, 큐비트는 동시에 0과 1의 상태를 가질 수 있습니다. 양자 알고리즘은 고전적인 알고리즘보다 특정 문제에서 더 빠른 해결 방법을 제공합니다. 대표적인 양자 알고리즘에는 그로버 알고리즘 (Grover's Algorithm)과 쇼어 알고리즘 (Shor's Algorithm)이 있습니다.그로버 알고리즘 (Grover's Algorithm)그로버 알고리즘은 비정렬 데이터베이스에서 특정 항목을 검색하는 문제를 해결합니다. 고전적인 알고리즘은 (O(N)) 시간이 걸리는 반면, 그로버 알고리즘은 (O(\sqrt{N})).. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조] Day 27: 최소 신장 트리 (크루스칼, 프림 알고리즘) 최소 신장 트리 (MST, Minimum Spanning Tree)최소 신장 트리(MST)는 가중치가 있는 연결된 그래프에서 모든 정점을 포함하며, 간선의 가중치 합이 최소가 되는 트리입니다. MST를 찾는 대표적인 알고리즘으로는 크루스칼 알고리즘과 프림 알고리즘이 있습니다.크루스칼 알고리즘 (Kruskal's Algorithm)크루스칼 알고리즘은 간선을 가중치의 오름차순으로 정렬한 후, 사이클을 형성하지 않는 간선을 선택하여 MST를 구성하는 알고리즘입니다.크루스칼 알고리즘의 시간 복잡도:(O(E \log E + E \log V)), 여기서 (E)는 간선의 수, (V)는 정점의 수입니다.크루스칼 알고리즘 구현그래프 구현 (간선 리스트 사용)#include #include #include // 간선 구조.. 2024. 8. 1.
[C++로 배우는 알고리즘과 자료구조 심화] Day 27: 유전 알고리즘 (Genetic Algorithms) 유전 알고리즘 (Genetic Algorithms)유전 알고리즘(Genetic Algorithms, GA)은 자연 선택의 원리를 모방한 최적화 알고리즘입니다. 유전 알고리즘은 주로 복잡한 최적화 문제를 해결하는 데 사용되며, 초기 해 집합(개체군)을 생성하고 이를 진화시키는 과정을 반복하여 최적해를 찾아갑니다.유전 알고리즘의 주요 단계초기화: 초기 개체군을 무작위로 생성합니다.선택: 적합도에 따라 부모 개체를 선택합니다.교차 (Crossover): 부모 개체의 유전자를 교환하여 자손을 생성합니다.돌연변이 (Mutation): 자손의 유전자 일부를 무작위로 변경하여 다양성을 유지합니다.적합도 평가: 각 개체의 적합도를 계산합니다.종료 조건 확인: 최적해를 찾았거나 최대 세대 수에 도달하면 알고리즘을 종료합.. 2024. 8. 1.
반응형