학습 내용 합집합 찾기(Union-Find) Union-Find는 대표적인 그래프 알고리즘으로 '합집합 찾기'라는 의미를 가지고 있으며 서로소 집합(Disjoint-Set) 알고리즘이라고도 부른다. 구체적으로 여러 개의 노드가 존재할 때 두 개의 노드를 선택해서, 현재 이 두 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘이다. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 만약 여러 개의 노드가 서로 자유분방하게 존재한다면 모두 연결되지 않고 각자 자기 자신만을 집합의 원소로 가지고 있는 것과 같다. 이러한 경우 모든 값이 자기 자신을 가리키도록 만들어서 표현할 수 있다. 1 2 3 4 5 6 7 8 1 1 3 4 5 6 7 8 이때 1과 2가 연결되었다면 다음과 같이 2번째 인덱스의 ..
학습 내용 메시지를 통한 노드 간 통신 Teacher(Publisher)가 "my_topic"이라는 토픽을 Student(Subscriber)에게 전송하면 Student가 이 화면에 출력하는 토픽 통신 시스템을 구현해 보자. 언어는 C++를 사용한다. 디렉터리 구성은 다음과 같다. xycar_ws ├─ build ├─ devel └─ src ├─ CMakeLists.txt └─ msg_send ├─ CMakeLists.txt ├─ launch │ └─ m_send.launch └─ src ├─ teacher.cpp └─ student.cpp 먼저 msg_send 패키지를 ROS workspace인 xycar_ws의 src 폴더 안에 생성하여야 한다. 이때 catkin_create_pkg을 사용하여 패키지..
학습 날짜 09/25 ~ 09/27 학습 내용 1. Development environment for C++ C++ 개발을 위한 기본적인 개념과 환경 설정에 대한 학습 개발환경이란 개발을 위한 OS, 프로그래밍 언어, IDE 등을 세팅하는 것이다. * 멘토님의 Tip) 되도록이면 프로젝트를 같이 하는 팀원끼리는 개발환경을 통일하는 것이 좋다. Compiler는 자연어 - 기계어를 번역하는 역할을 한다. gcc란 c++ compiler 중 하나로 다양한 언어를 지원하고 다양한 플랫폼을 지원한다. GPL 쓰는 것을 매우 비추천한다. 최적화 기능과 플러그인 아키텍처를 지원하고 여러 프로그래밍 언어 표준을 준수한다. Clang은 c, c++ 등 c 관련 프로그래밍 언어를 위한 컴파일러 프론트엔드이다. LLVM ..
학습 내용 STL sort() 함수 이미 정렬은 아주 훌륭한 정렬 관련 라이브러리가 존재하므로 가져다가 쓰기만 하면 된다. sort() 함수는 C++의 algorithm 헤더에 포함되어 있다. sort() 함수는 기본적으로 오름차순 정렬을 수행한다. 전달 인자로는 배열의 시작점 주소와 마지막 주소 + 1을 적으면 된다. sort() 함수의 기본 사용법 #include #include using namespace std; int main(void) { int a[10] = {9, 3, 5, 4, 1, 10, 8, 6, 7, 2}; sort(a, a + 10); for(int i = 0; i score = score; } // 정렬 기준은 점수..
*여러 자료를 찾아가며 정리한 것이라 간혹 오류가 있을 수 있습니다. 시작하기에 앞서 현재 나의 프로그래밍 경험 대학 수강 과목: 알고리즘(C), 객체지향프밍(Python), 프언(C), 임베디드시스템설계(Java) 등 학습 학부연구생 경험으로 Python 능숙 C++은 접해본 적은 있으나 거의 초보 목표 한달 내 프로그래머스 C++ lv.1 문제 풀 정도의 실력 로봇 프로그래밍을 위한 실력 쌓기 메모리 관리에 대해 자세히 알고 싶음 참고 학습 자료 C/C++ 강의 https://youtu.be/-h_uxJiiiqg 이것이 C++ 이다 https://youtu.be/8ZiSzteFRYc 학습 내용 C++ 특징 가상머신이 필요 없어 실행 속도가 빠름. 대신 개발자가 직접 메모리 관리를 해야함(장점이자 단점..