학습 로드맵
Softeer 학습 로드맵은 초급부터 전문가 수준까지 총 5단계로 나뉘어져 있으며, 프로그래밍 기초부터 심화된 알고리즘, 자료구조, 컴퓨터 과학 이론, 문제 해결 능력 등 다양한 개발 역량을 키워나갈 수 있는 내용으로 구성되어 있습니다.
Softeer 학습 로드맵
복잡한 알고리즘에 대한 이해보다는 문제 해결 능력을 중점으로 문법과 개념을 이해하는 것이 중요합니다.
프로그래밍 언어 학습(C, C++, Java, Python)
입출력과 조건문 기초 학습
기본적인 문자열 처리 기술 학습
소프트웨어 개발에 대한 기초 개념 학습
데이터 구조와 알고리즘, 객체 지향 프로그래밍 등에 대해 다루며, 프로그래밍 기초적인 개념을 알고, 제시된 프로그램의 입력 값에 대한 출력 값을 이해하며, 기본 알고리즘을 활용하여 간단한 요구사항을 구현 가능한 수준입니다.
기초적인 자료구조와 알고리즘 학습
객체 지향 프로그래밍 학습
초급 그래프 알고리즘 학습
컴퓨터 공학 전반에 대한 지식을 갖추고 필수 자료구조 및 알고리즘을 활용할 수 있으며, 복잡도를 고려하여 제시된 조건에 맞는 S/W 제작이 가능한 수준입니다.
그래프, 트리, 재귀, 동적 계획법 등 더 복잡하고 알고리즘과 자료 구조 학습
객체 지향 프로그래밍, 라이브러리 활용법 학습
문제 해결 능력 강화
복잡도를 고려한 최적화된 S/W 제작이 가능하여 개발된 프로그램에 대한 검토 및 시험을 할 수 있는 수준입니다.
그리디 알고리즘 (Greedy Algorithm)
동적 프로그래밍 (Dynamic Programming)
트리 구조에 대한 개념과 알고리즘
컴퓨터 공학에 전반에 대한 고급 지식과 높은 이해도를 바탕으로 개발에 대한 통합적 사고를 가지고 있어 복잡한 요구사항에도 최적 성능을 이끌어 내기 위한 설계, 구현, 수정이 모두 가능한 수준입니다.
고급 그래프 알고리즘
동적 계획법, 분할 정복, 그리디 알고리즘, 네트워크 플로우
코딩 테스트 대비, 실전 프로그래밍 경험, 영어 리딩 및 문서 이해 능력 향상 등 학습
프로그래밍 언어
학습 로드맵
C 프로그래밍 초급 권장학습
C 프로그래밍 개요
- C 언어의 특징, 구조, 용도 등
실습 환경 설정
- C 언어를 실습할 수 있는 개발 환경을 구축
반복문
- while, for문을 이용하여 반복문을 작성하는 방법 등
포인터
- 포인터 변수의 선언과 활용법, 배열과의 관계, 동적 메모리 할당 등
조건&분기
- if, switch문을 이용하여 조건과 분기를 처리하는 방법
문자열
- 문자열 배열의 선언, 문자열 처리 함수 등
자료형
- C 언어에서 사용되는 자료형과 그 특징
함수
- 함수의 정의와 호출, 인수 전달, 반환 값 처리 등
구조체
- 구조체의 정의와 활용 방법을 학습합니다.
변수, 상수
- 변수와 상수의 선언과 활용 방법
배열
- 배열의 선언과 초기화, 다차원 배열 등
파일 입출력
- 파일 입출력 함수를 이용하여 파일을 읽고 쓰는 방법
입출력
- scanf, printf 함수를 이용하여 입출력을 처리하는 방법
다차원 배열
- 2차원, 3차원 배열의 선언과 초기화, 다차원 배열을 이용한 프로그래밍 방법
동적 메모리
- malloc 함수를 이용하여 동적 메모리를 할당하고, free 함수를 이용하여 해제하는 방법
C++ 프로그래밍 초급(1) 권장학습
C++ 프로그래밍 개요
- C++ 언어의 특징과 장단점, 사용 분야 등에 대한 개요
- C++ 프로그래밍 언어의 역사와 표준화 과정
실습 환경 설정
- C++ 개발을 위한 통합 개발 환경(IDE) 및 컴파일러 설치
- 프로그래밍에 필요한 기본적인 도구 및 라이브러리 설치
데이터
- 데이터의 종류와 표현 방법
- 기본 자료형과 데이터 형식 변환
- 상수와 변수
입출력
- 입출력 스트림과 입출력 연산자
- 사용자로부터 입력받고 화면에 출력하기
연산자
- 산술 연산자와 논리 연산자
- 비트 연산자와 비교 연산자
- 연산자 우선순위와 연산 순서
흐름 제어
- 조건문과 반복문
- break와 continue문의 활용
- switch문의 사용법
복합 데이터
- 배열과 구조체
- 배열과 포인터의 차이
- 구조체의 정의와 사용 방법
포인터
- 포인터의 개념과 용도
- 포인터와 배열의 관계
- 포인터 연산
참조
- 참조(reference) 개념과 활용
- 포인터와 참조의 차이점
함수
- 함수의 기본 개념과 구조
- 함수의 호출 방법과 매개 변수 전달 방식
- 함수의 반환 값과 반환형
범위
- 변수의 스코프(scope)와 라이프타임(lifetime)
- 전역 변수와 지역 변수- 이름공간(namespace) 개념과 활용
Java 프로그래밍 초급 (1) 권장학습
Java 프로그래밍 개요
- Java의 역사, 특징, 활용 분야 등에 대한 개요
실습 환경 설정
- Java 개발을 위한 IDE(Integrated Development Environment)를 설치하고 설정하는 방법
문자열
- 문자열 데이터 타입과 문자열 다루는 방법
변수
- 변수의 개념과 선언, 초기화, 사용 방법 등
데이터 타입
- 기본 데이터 타입과 참조 데이터 타입의 개념, 사용 방법, 형 변환 등
연산자
- 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자 등의 종류와 사용 방법
조건문
- if문과 switch문을 사용한 조건문
논리 연산자
- &&(and), ||(or), !(not)의 개념과 사용 방법
배열
- 배열의 개념, 선언, 초기화, 사용 방법, 다차원 배열 등
입력과 출력
- Java에서 기본적으로 제공하는 입력과 출력 방법(System.in, System.out)과 Scanner 클래스를 사용한 입력 방법 등
Python 프로그래밍 초급 (1) 권장학습
Python 프로그래밍 개요
- Python의 역사, 특징에 대한 기본적인 개념
실습 환경 설정
- Python을 실행하기 위해 필요한 개발 도구를 설치하고 설정하는 방법
자료열
- Python에서 사용하는 기본 자료형과 변수의 개념- 자료형 변환에 대해 이해
제어문
- 조건문과 반복문
- 제어문을 사용하여 프로그램 실행 흐름을 제어하는 방법
함수
- 함수의 개념과 작성 방법, 매개변수와 반환값
- 함수를 활용하여 프로그램을 모듈화하는 방법
자료구조 리스트
- 리스트 자료형 및 리스트를 다루는 기능과 메소드
C++ 프로그래밍 초급(2) 권장학습
클래스
- 클래스를 선언하고 정의하는 방법
- 멤버 함수를 정의하는 방법
상속
- 상속의 개념과 다중 상속, 상속의 종류 등
연산자 오버로딩
- 연산자 오버로딩의 개념과 오버로딩 가능한 연산자, 연산자 함수 등
템플릿
- 함수 템플릿과 클래스 템플릿, 템플릿 특수화 등
예외 처리
- 예외 처리의 개념과 try-catch문, 예외 처리 방법 등
STL
- STL의 개념과 STL 컨테이너, 반복자, 알고리즘 등
C++ 14/17/20 버전별 팁
- C++14/17/20 버전에서 추가된 기능, 변경된 문법
- C++14/17/20에서 추가된 auto 키워드, range-based for문, constexpr 함수 등
Java 프로그래밍 초급 (2) 권장학습
메서드
- 메서드의 개념 및 선언하고 호출하는 방법
- 파라미터와 반환값을 다루는 방법
객체 지향 프로그래밍
- 객체 지향 프로그래밍의 개념과 특징
- 클래스와 인스턴스, 객체의 차이점
클래스와 인스턴스 그리고 객체지향
- 클래스와 인스턴스를 구분, 객체 지향의 개념을 이해
- 클래스와 인스턴스의 구성요소와 생성 방법
클래스 멤버, 인스턴스 멤버
- 클래스 멤버와 인스턴스 멤버의 차이
- 멤버 변수와 멤버 함수를 선언하는 방법
상속과 생성자
- 상속의 개념, 상속 관계를 구성하는 방법
- 생성자의 개념과 역할 및 상속과 생성자의 관계 이해
오버라이딩
- 메서드 오버라이딩의 개념과 필요성
- 부모 클래스의 메서드를 오버라이딩하는 방법
오버로딩
- 메서드 오버로딩의 개념과 필요성
- 메서드 이름과 파라미터 타입을 다르게 하여 메서드를 오버로딩하는 방법
클래스 패스
- 클래스 패스의 개념, 클래스 패스를 설정하는 방법
패키지
- 패키지의 개념과 필요성 및 패키지 생성 방법
- 패키지를 import하여 사용하는 방법
제네릭
- 제네릭의 개념과 필요성
- 제네릭 타입을 선언하는 방법
Python 프로그래밍 초급 (2) 권장학습
모듈과 패키지
- 모듈과 패키지 개념, 사용방법 및 내장 모듈 사용
자료구조_튜플
- 튜플 자료형 개념
- 튜플의 인덱싱과 슬라이싱
- 튜플의 연산과 함수
자료구조_셋, 딕셔너리
- 셋 자료형 개념
- 셋의 연산과 함수
- 딕셔너리 자료형 개념
- 딕셔너리의 연산과 함수
예외처리
- 예외 처리의 개념
- try-except 문
- 예외의 종류와 처리 방법
자료구조 및 알고리즘
학습 로드맵
알고리즘 기초 권장학습
SW 문제해결
- 문제 해결 과정에 대한 이해
- 문제 해결을 위한 접근 방법과 과정
알고리즘 복잡도
- 알고리즘 성능 측정을 위한 복잡도 이론
- 시간 복잡도와 공간 복잡도 개념
- 복잡도 분석을 통한 알고리즘 효율성 판단 방법
비트 연산
- 비트 연산 개념
- 비트 연산을 활용한 문제 해결 방법
진법
- 진법의 개념과 이해
- 10진법, 2진법, 16진법 등 다양한 진법 변환 방법
실수
- 실수 데이터 타입의 특징
- 실수 계산 시 발생하는 오차와 오차 해결방법법
String 권장학습
String
- String의 개념과 문자열 처리 방법 (문자열 분리, 문자열 합치기, 문자열 비교 등)
- 문자열 검색과 치환 (strstr(), strcmp(), strtok() 등)
패턴 매칭 (Naive)
- 패턴 매칭의 개념과 Naive 알고리즘
- Naive 알고리즘의 시간 복잡도와 한계점
- 패턴 매칭 알고리즘의 개선(Rabin-Karp, KMP 등)
Array 권장학습
Array
- Array의 개념과 배열의 선언 및 활용 방법
- 다차원 배열의 선언과 활용 방법
- Array의 시간 복잡도와 공간 복잡도
2차원 Array
List
- List의 개념과 종류
- List의 삽입, 삭제, 검색 등의 기본 연산과 시간 복잡도
- List의 활용 방법과 예시
정렬 권장학습
삽입 정렬 (Insertion Sort)
- 삽입 정렬의 개념과 원리
- 시간 복잡도와 최선/최악의 경우 시간 복잡
- 삽입 정렬의 구현 방법
버블 정렬 (Bubble Sort)
- 버블 정렬의 개념과 원리
- 시간 복잡도와 최선/최악의 경우 시간 복잡도
- 버블 정렬의 구현 방법
선택 정렬 (Selection Sort)
- 선택 정렬의 개념과 원리
- 시간 복잡도와 최선/최악의 경우 시간 복잡도
- 선택 정렬의 구현 방법
Queue 권장학습
Queue 자료 구조 개념
- Queue의 개념과 구조
- Queue의 특성과 장단점
- Queue의 구현 방법
Queue의 활용
- BFS(Breadth-First Search) 알고리즘에서의 활용
- 캐시, 버퍼, 대기열 등 다양한 용도에서의 활용
- 실제 프로그래밍에서 Queue를 활용한 문제 해결 방법
Queue의 종류
- 일반 Queue와 Deque의 차이점
- Circular Queue의 개념과 구현 방법
- PriorityQueue의 개념과 구현 방법
Stack 권장학습
Stack 자료구조 개념
- Stack의 개념과 구조
- Stack의 특성과 장단점
- 구현방법
Stack의 응용
- DFS(Depth-First Search) 알고리즘에서의 활용
- 괄호 짝 맞추기, 후위 표기법 등 다양한 알고리즘에서의 활용
- 실제 프로그래밍에서 Stack을 활용한 문제 해결 방법
완전 탐색 초급 권장학습
완전 탐색 기법
- 완전 탐색의 개념과 특징
- 대표적인 완전 탐색 알고리즘인 Brute Force의 구현 방법
순열과 조합
- 순열과 조합의 차이와 개념
- 순열과 조합의 구현 방법 및 응용 방법
조합적 문제
- 조합의 개념과 구현 방법
- 조합을 이용한 문제 해결 방법
그래프 초급 및 탐색 권장학습
그래프 기본(묵시적 그래프_격자)
- 그래프의 개념과 종류
- 묵시적 그래프(격자)의 구현과 활용
그래프 탐색(BFS/DFS)
- 그래프 탐색의 개념과 특징
- BFS(Breadth First Search) 알고리즘의 구현 방법과 활용
- DFS(Depth First Search) 알고리즘의 구현 방법과 활용
수학 초급 권장학습
최대공약수(GCD)와 최소공배수(LCM)
- GCD와 LCM의 개념과 정의
- GCD와 LCM을 구하는 방법과 알고리즘
소수
- 소수의 개념과 특징
- 소수 판별 방법 및 알고리즘
재귀 초급 권장학습
피보나치 수
Tree 초급 권장학습
Tree
- Tree의 개념과 용어(노드, 루트, 리프, 부모, 자식 등)
- Tree의 종류- Tree의 활용 (파싱, 그래프 등)
Binary Tree
- Binary Tree의 개념과 구조
- 이진 트리 순회 방법(전위 순회, 중위 순회, 후위 순회)
- 이진 트리의 높이, 균형, 완전성 등
Expression Tree
- 개념과 구조
- Expression Tree의 활용(수식 계산 등)
Binary Search Tree
- Binary Search Tree의 개념과 특징
- 삽입, 삭제, 탐색 등의 연산
- Balanced Binary Search Tree(AVL Tree, Red-Black Tree 등)
Heap
- Heap의 개념과 구조
- Heap의 종류 (Max Heap, Min Heap 등)
- Heap의 활용 (우선순위 큐 등)
완전 탐색 중급 권장학습
백트래킹
- 백트래킹의 개념과 특징
- 백트래킹을 사용한 문제 풀이 방법과 알고리즘
- 대표적인 백트래킹 문제(N-Queen, 스도쿠, 알파벳)
순열과 조합
- 순열과 조합의 개념과 특징
- 순열과 조합을 구하는 방법과 알고리즘
- 순열과 조합을 활용한 문제 풀이
비트 마스크
- 비트 마스크의 개념과 특징
- 비트 마스크를 사용한 문제 풀이 방법과 알고리즘
- 대표적인 비트 마스크 문제들 (부분 집합의 합, 집합의 표현)
부분 집합
- 부분 집합의 개념과 특징
- 부분 집합을 구하는 방법과 알고리즘
- 부분 집합을 활용한 문제 풀이 (조합, 스타트와 링크)
동전 거스름돈 문제
- 동전 거스름돈 문제의 개념과 특징
- 동전 거스름돈 문제를 해결하는 방법과 알고리즘
그래프 중급 권장학습
그래프 중급(인접행렬/인접리스트)
- 그래프 표현 방법별 학습
유니온 파인드
- 서로소 집합 (Disjoint Set)을 관리하기 위한 자료구조
- find와 union 연산의 개념과 구현 방법
최소 신장 트리(V^2 프림 알고리즘, 크루스칼 알고리즘)
- 알고리즘 동작 방식과 시간 복잡도
최단 경로(V^2 다익스트라 알고리즘)
- 하나의 시작 노드에서 다른 모든 노드까지의 최단 경로를 찾는 문제
- 알고리즘 동작 방식과 시간 복잡도
재귀 고급 권장학습
하노이 타워 및 변형 문제
- 그래프 표현 방법별 학습
분할 정복 권장학습
분할 정복 기법
- 개념과 원리 이해
병합 정렬
- 병합 정렬 알고리즘 이해 및 구현
퀵 정렬
- 퀵 정렬 알고리즘 이해 및 구현
이진 검색
- 이진 검색 알고리즘 이해 및 구현
동적계획법 초급 권장학습
수학적 귀납법과 비둘기 집
- 수학적 귀납법은 자연수에 대한 증명 기법으로, 초학 과정에서 배우는 내용 중 하나
동전 거스름돈 문제와 이항계수
- 동전 거스름돈 문제는 지불해야 할 금액과 사용 가능한 동전의 종류가 주어졌을 때, 지불해야 할 금액을 최소한의 동전으로 거슬러 주는 문제
메모이제이션과 동적계획법
- 메모이제이션은 동적 계획법의 핵심 기술 중 하나
- 이미 계산한 값을 저장해 두었다가 나중에 필요할 때 다시 사용
배낭 문제
- 배낭 문제는 가방에 넣을 수 있는 무게의 제한이 있을 때, 가방에 담을 수 있는 물건들의 가치의 합을 최대화하는 문제
탐욕 알고리즘 초급 권장학습
탐욕 알고리즘
- 각 단계에서 최적이라고 생각되는 선택을 하며 전체적인 결과를 도출하는 알고리즘
배낭 문제
- 가방에 담을 수 있는 무게 제한이 있을 때, 각 물건의 가치와 무게가 주어졌을 때, 가방에 담을 수 있는 물건들의 가치의 최대값을 구하는 문제
동전 거스름돈 문제
- 거스름돈을 동전의 단위로 나누어 지불할 때 필요한 동전의 최소 개수를 구하는 문제
활동 선택 문제
- 일정한 자원을 이용하여 최대한 많은 활동을 수행할 때, 가능한 많은 활동을 선택하는 문제
Tree 중급 권장학습
Tree DP
- Tree DP의 개념과 활용
- Tree DP를 이용한 문제 풀이
LCA (Lowest Common Ancestor)
- LCA의 개념과 활용- LCA 알고리즘 (최소 공통 조상 알고리즘) (Tarjan's algorithm, RMQ algorithm 등)
- LCA를 이용한 문제 풀이
Tree 탐색
- Tree 탐색의 종류 (DFS, BFS)
- DFS (Depth First Search)의 종류 (전위 순회, 중위 순회, 후위 순회)
- DFS를 이용한 문제 풀이
- BFS (Breadth First Search)를 이용한 문제 풀이
Tree 고급 및 자료구조 (1) 권장학습
세그먼트 트리
- 세그먼트 트리의 구조와 원리, 구현 방법 학습
펜윅 트리
- 구간 합을 빠르게 구하는 데에 사용되는 자료구조
- 펜윅 트리의 구조와 원리, 구현 방법 등을 학습
세그먼트 트리_Lazy Propagation
- 세그먼트 트리에서 값을 업데이트할 때, 필요한 부분만 업데이트하는 기술
- 구간 쿼리를 할 때, Lazy Propagation을 이용하여 구간 업데이트를 먼저 수행해 놓고, 나중에 필요할 때 계산하는 방법을 학습
문자열 탐색 초급 권장학습
해싱
- 문자열을 숫자로 변환하여 빠른 탐색을 가능하게 하는 기법에 대하여 학습
문자열 매칭
- 두 문자열을 비교하여 일치하는 부분을 찾는 알고리즘
KMP
- 문자열 매칭 알고리즘 중 하나로, 비교 대상 문자열과 패턴 문자열을 비교하면서 일치하지 않는 부분을 최소화하여 탐색 속도를 높이는 방법
트라이
- 문자열 집합을 저장하고 탐색하는데 사용되는 자료구조
문자열 압축 (허프만)
- 문자열을 압축하여 저장하고 해제하는 알고리즘
라빈카프
- 해싱 기법을 이용한 문자열 매칭 알고리즘 중 하나로, 일치하는 부분을 해싱 값을 이용하여 검사하는 방법
근사 알고리즘 권장학습
P와 NP
- P 문제는 다항식 시간 안에 해결할 수 있는 문제
- NP 문제는 다항식 시간 안에 해결하기 어려운 문제
근사해
- 근사 알고리즘은 다항식 시간 안에 문제를 근사적으로 해결하는 알고리즘
NP Complete
- NP 문제 중에서 가장 어려운 문제
- 대표적인 NP Complete 문제로는 여행하는 외판원 문제(TSP)와 배낭 문제 등
모의 담금질 기법
그래프 고급 권장학습
벨만포드 알고리즘
- 음수 가중치 그래프에서 최단 경로를 찾는 알고리즘
플로이드 알고리즘
- 모든 정점 쌍 사이의 최단 경로를 찾는 알고리즘
최단경로(PQ다익스트라 알고리즘)
- 음수 가중치 그래프에서는 사용할 수 없지만, 양수 가중치 그래프에서 다른 모든 정점까지의 최단 경로를 찾는 가장 효율적인 알고리즘 중 하나
SPFA 알고리즘
- 음수 가중치 그래프에서 최단 경로를 찾는 알고리즘
위상 정렬
- 방향 그래프의 정점들을 일렬로 나열하는 알고리즘으로, DAG(Directed Acyclic Graph)에서 사용
수학 중급 권장학습
카달란 수
- 괄호 문제와 같은 여러 가지 조합 문제에서 사용되는 수열
오일러 피 함수
- 정수 n과 서로소인 양의 정수의 개수를 구하는 함수
고급 다이나믹 프로그래밍
- 좀 더 복잡한 점화식을 활용하여 문제를 푸는 다이나믹 프로그래밍 기법
페르마 정리
- 거스름돈을 동전의 단위로 나누어 지불할 때 필요한 동전의 최소 개수를 구하는 문제
유클리드 알고리즘
- 두 수의 최대공약수를 구하는 알고리즘
확률
- 랜덤 변수와 확률 분포, 기대값과 분산 등을 이해하고 문제를 푸는 기초적인 확률 이론
기하 알고리즘 초급 권장학습
CCW
- 3개의 점이 주어졌을 때, 이들이 반시계 방향으로 주어지는지, 시계 방향으로 주어지는지, 일직선상에 위치하는지를 판별하는 알고리즘
단순 닫힌 경로
- 평면 상의 점들이 주어졌을 때, 이들이 한 번 이상 교차하지 않는 선분으로 연결된 경로
Convex Hull(그라함 스캔)
- 평면 상의 점들 중에서 가장 바깥쪽에 위치한 볼록 다각형을 찾는 알고리즘
동적 계획법 중급 권장학습
상태 공간 트리의 탐색
- 동적 계획법은 상태 공간 트리(State Space Tree)를 효율적으로 탐색하여 최적해를 구하는 데 사용
- 상태 공간 트리의 개념과 탐색 알고리즘(예: 백트래킹, 분기 한정법)
모든 쌍 최단 경로 문제
- 그래프에서 모든 정점 쌍 사이의 최단 경로를 구하는 문제
- 상태 공간 트리의 개념과 탐색 알고리즘(예: 백트래킹, 분기 한정법)
최장 증가 수열
- 주어진 수열에서 가장 긴 증가하는 부분 수열을 찾는 문제
순회 외판원 문제
- 여러 도시 사이의 거리가 주어졌을 때, 모든 도시를 한 번씩 방문하고 출발 도시로 돌아오는 최단 경로를 찾는 문제
탐욕 알고리즘 중급 권장학습
관련 문제 풀이
- 최소 신장 트리
- 최적 스케줄링
- 배낭 문제
- 최단 경로 문제
Tree 고급 및 자료구조 (2) 권장학습
세그먼트 트리 2차원
- 세그먼트 트리 2차원은 2차원 배열에서의 구간 최소/최대/합 등의 연산을 효율적으로 처리하기 위한 자료구조
- 트리의 각 노드에는 해당 구간의 최소/최대/합 등의 정보를 저장하며, 각 노드에서 자식 노드들의 정보를 조합하여 상위 노드의 정보를 구성
펜윅 트리_Lazy Propagation
- 펜윅 트리에 Lazy Propagation 기법을 적용한 자료구조로 구간 합을 빠르게 구할 수 있음
문자열 탐색 중급 권장학습
접미어 트리
- 문자열의 접미어들을 트리 형태로 저장하여 문자열 탐색에 활용하는 자료구조
- Suffix Trie라고도 부르며, 문자열 탐색, 패턴 매칭, 문자열 압축 등에 활용
아호-코라식
- 여러 개의 패턴 문자열을 한 번에 탐색하기 위한 알고리즘
- 트라이 구조와 큐를 이용하여 구현되며, 문자열 탐색, 자연어 처리 등에 활용
접미어 배열
- 문자열의 모든 접미어를 사전순으로 정렬한 배열
- 문자열 탐색, 패턴 매칭 등에 활용
네트워크 플로우 권장학습
최대 유량
- 유량을 최대한으로 이동시키는 문제
- 포드-풀커슨 알고리즘, 에드몬드-카프 알고리즘, 디닉의 알고리즘 등을 학습
최소 컷
- 네트워크에서 최소 비용으로 연결을 끊어내는 문제
- 포드-풀커슨 알고리즘 등을 학습
최대 독립 집합
- 그래프에서 서로 인접하지 않는 정점 집합 중 가장 큰 집합을 구하는 문제
- 이분 그래프에서 이분 매칭을 활용하는 방법 등을 학습
최소 비용 최대 유량(Minimum Cost Maximum Flow, MCMF)
- 유량을 최대로 흐르게 하면서 그 비용이 최소가 되도록 구하는 문제
- 에드몬드-카프 알고리즘과 벨만-포드 알고리즘을 결합한 알고리즘 등을 학습
이분매칭
- 이분 그래프에서 각 정점 사이에 매칭을 만드는 문제
- 헝가리안 알고리즘 등을 학습
최소 버텍스 커버
- 그래프에서 최소한의 정점으로 모든 간선을 커버하는 문제
- 이분 매칭, 정점 분할 등을 학습
모델링
- 네트워크 플로우 문제를 현실 세계의 문제로 바꾸어 풀이하는 방법 학습
수학 고급 권장학습
확장 유클리드
- 두 정수 a, b에 대해 최대공약수(greatest common divisor, GCD)를 구하는 알고리즘
- 일반적인 유클리드 알고리즘의 확장 버전
중국인 나머지 정리
- 한정된 모듈러 연산의 묶음에서 대규모 정수나 분수에 대한 문제를 해결하는 데 유용한 방법
- 암호학, 네트워크, 컴퓨터 보안, 정보 이론, 수치 해석 등 다양한 분야에서 활용
기하 알고리즘 중급 권장학습
라인 스위핑
- 2차원 평면상의 점들을 처리하기 위한 알고리즘으로 다양한 기하학적 문제를 해결
- 다각형 교차 판정, 삼각형 교차 판정, 중복되는 선분 제거, 최대 직사각형 찾기 등의 문제가 있음
현대자동차그룹 특화 SW 교육
현대엔지비 'SW 아카데미'는 현대자동차그룹에 특화된 SW 교육을 제공합니다.
문의사항 : 현대엔지비 기술교육 담당자 (02-870-8028, banya99@hyundai-ngv.com)
수강신청 사이트 : NGV CAMPUS 바로가기
SW개발
-
개발 프로세스
-
자동차 소프트웨어 공학 입문
-
현대차 소프트웨어개발 프로세스 이해
-
애자일 프로젝트 관리
-
-
요구공학
-
요구공학 기초 이해
-
시스템 & 소프트웨어 요구사항 관리
-
형상관리 / 결함관리 이해
-
-
아키텍처
-
소프트웨어 아키텍처 개념 및 설계
-
Software Product Line(SPL)
아키텍처 이해와 적용 -
서비스 지향 아키텍처(SoA)의 이해
-
-
AUTOSAR
-
AUTOSAR 기초 이론
-
-
AUTOSAR기반
소프트웨어
플랫폼 개발
(with Mobilgene) -
AUTOSAR기반
소프트웨어
플랫폼 개발
(with Davinci)
-
-
애자일 프로젝트 관리
-
-
설계
-
차량용 SW설계(Design)
-
소프트웨어 기능 설계
-
소프트웨어 분석 및 설계(UML)
-
강건 제어로직(Robust Control)
설계(with MALTAB & Simulink) -
일반제어 공학
(Feedback Control Systems) -
Control Design
-
차량제어 MPC 기법 및 구현 기초
-
-
구현
-
임베디드 C프로그래밍 기초
-
알고리즘 기법을 활용한 문제 해결
-
C언어 고급 기법 활용
-
C기반 System 제어 기본
-
임베디드 C프로그래밍
코드 최적화 기법 -
MISRA-C에 기반한 신뢰성
소프트웨어 개발
-
Simulink for System and
Algorithm Modeling -
Embedded Coder for
Production Code Generation -
Stateflow for Logic Driven
System Modeling
-
아두이노를 활용한 제어 기초
-
차량 소프트웨어 개발 기초
-
차량 전자제어 시스템 개발 기초
-
-
TOOL
-
MATLAB Fundamentals
-
MATLAB & Simulink 기초 및 응용
-
MATLAB Programming Techniques
-
Simulink & Stateflow
-
Stateflow 응용
-
소프트웨어 정적검증을 위한
Polyspace 사용법
-
기반기술
-
통신
-
차량용 통신시스템 이해
-
V2X 통신기술의 이해
-
차량용 이더넷 통신
-
CAN 시스템 이론 및 설계
-
CANoe를 이용한
CAN 시스템 이해 및 설계 -
차량용 통신 Gateway
-
-
신호처리
-
전자파 원리 및 안테나 기술 이해
-
음향 신호 처리
-
디지털 신호처리 및 필터 설계
-
-
HW
-
전기전자 및 소자 기초 이해
-
자동차 전력전자시스템 설계 및 응용
-
전자회로 구성요소 이해 및 설계
-
제어기 설계 이해
-
전기차용 전동기 구동시스템 및 전력변환 제어
-
마이크로프로세스 기본요소
및 작동원리 이해 -
멀티코어 기반 ECU 제어로직 개발
-
전자회로 구성요소 이해 및 설계
-
ECU성능 최적화 및 가독성 향상을
위한 Simulink 모델 개발 및 실습
-
-
보안
-
커넥티드카를 위한
사이버 보안 위협 및 기술 -
자동차 전장시스템 보안
이해 및 실습 -
자동차해킹 실습 통한
자동차 보안 이해(CAN 통신편)
-
-
기능안전
-
ISO26262 기초
-
기능안전 핵심 이해
-
기능안전 핵심 활용
-
시스템 안전분석 및 설계
-
소프트웨어 안전설계 및 분석
-
하드웨어 안전설계 및 분석
-
기능안전 테스팅 V&V
-
ISO26262 Test Method 실무
-
A-SPICE 초급
-
A-SPICE 중급
-
자율주행
-
센서
-
센서 및 계측공학
-
ADAS 센서 원리 및 퓨전 이해
-
자율주행차 머신러닝 및 센서 데이터 처리
-
라이다 포인트 클라우드 처리 및 응용
-
ADAS설계 및 응용
(with MATLAB&Simulink)
-
칼만필터 설계 입문(with MATLAB)
-
자율주행을 위한 앱/센서 기반의
위치인식 기술 이해
-
-
영상처리
-
영상 인식 및 신호 처리 방법 이해
-
디스플레이 공학 이해
-
openCV로 배우는 비전과
머신러닝 -
openCL과 CUDA를 이용한
GPU 프로그래밍
-
-
시뮬레이션
-
unity를 활용한 자율주행차
시뮬레이션 기초 -
HILS 환경 구축 및
모델링
-
제어
-
샤시제어
-
제어기초(바디/샤시)
-
차량동역학 및 조향 시스템 설계
(with MATLAB & Simulink) -
지능형 샤시 / 안전/ 편의제어
-
-
변속기/엔진/전동화제어
-
변속기 제어 기초
-
엔진제어 기초
-
환경차제어 기초
-
전동화 변속시스템 구성
및 제어 -
경쟁사 고성능 전기차
(테슬라, 포르쉐)의
시뮬레이션을 통한 이해
-
-
시스템제어
-
자동차 전기전자 제어장치 구조
및 원리 이해 -
자동차 전장 구조 및 분해조립
-
IT
-
IT
-
기간2 5G네트워크 이해
-
기간4 블록체인 기술 입문
-
기간3 자동차 사물인터넷(IoT)
-
기간3 Cloud Computing 입문
-
기간5 아이폰 어플리케이션 개발
-
기간5 QT기반 사물 인터넷 구현
-
기간3 VR(가상현실) 기술 이해
-
기간5 안드로이드 어플리케이션 개발
초급
-
-
트렌드 인사이트
-
기간3 UAM(PAV) 핵심 기술 이해
-
기간2 5스마트팩토리 개요
(유럽 스마트공장 사례) -
기간3 스마트팩토리 요소기술의 이해
-
기간5 스마트팩토리&
디지털 트랜스포메이션
-