코드플러스 백준 알고리즘 강의 중급과 고급을 수강하고 작성한 개인적인 후기입니다. 강의의 개요를 파악할 수 있도록 강의의 모든 목차가 기록되어 있습니다만, 강의 저작권을 고려하여 강의 내용은 제가 필기한 부분 중 일부분만 포함되어 있습니다. 알고리즘 관련 공부를 처음하신다면, '기초'강의 부터 수강하시기를 강추 드립니다. 만약 자료구조/알고리즘 수업을 꽤 재미있게 들어서 기초강의에 있는 스택/큐/그래프 등의 내용을 다 숙지하고 있으며, 실력에 자신 있다고 하더라도, 이런 종류의 문제에 접근하는 방법과 팁을 효율적으로 학습하기 위해 기초강의 부터 차근차근 수강하는것을 강추드립니다. 오히려 중급을 듣다가 모르는 부분을 찾아보고 이렇게 하는것은 시간 낭비입니다. 시간은 돈입니다 :) 저는 '중급 셋트+고급으로..
알고리즘 공부, 코딩 인터뷰, 알고리즘 대회 준비를 위해서 코드플러스에서 제공하는 최백준의 알고리즘 강의 수강하는 방법입니다. 1. 백준 알고리즘 강의 사이트에 접속하여 회원가입 합니다. ♠ 최백준 알고리즘 강의 사이트 - 코드플러스: code.plus/ 2. 메뉴의 '강의'와 '묶음 강의' 중 필요한 것을 선택하고 결제합니다. 코드플러스에서 강의를 판매하는 형식에는 에는 크게 두가지 종류가 있는데 '강의'를 하나씩 판매하는 '강의' 메뉴가 있고, 연관된 강의를 묶어서 판매하는 '묶음 강의' 메뉴가 있습니다. 아래의 그림과 같이 '강의' 메뉴를 선택하고 '강의 목록'을 살펴 봅니다. 메뉴에서 '묶음 강의'를 선택하여, '묶음 강의'도 찬찬히 둘러 봅니다. '강의'가 딱 하나만 필요하시다면, '강의' 섹션..
안녕하세요, 그간 사정이 있어 블로그에 오랫동안 접속하지 못했습니다. 그동안 많이 문의해주신것 중에 의외로 간단하지만 헷갈리는것이 있어 간단히 메모해두면 좋겠다 싶어서 글 남깁니다. 요즘 많은 인터넷 강의들은 결제일과 수업시작일이 따로 있습니다. 즉, 내가 오늘 결제를 하더라도 강의 수강은 삼일후나, 일주일 후 등등 내가 원하는 시간에 시작할 수 있는 기능이 있죠. 하지만, 백준강의는 아래와 같이 '결제일'에 바로 시작이 됩니다. 이것은 묶음 강의의 경우에도 마찬가지입니다. 그러나 묶음 강의의 경우는 당연히 강의 수강일이 묶음 강의 내의 각각 강의에서 제공하는 강의를 합친 일수와 같거나 조금 더 깁니다. 예를들면 고급1과 고급2를 각각 결제할 경우에, 각각 30일이 제공되어, 고급1을 7월에 듣고 고급2..
300 - 수학 1 나머지 최대공약수와 최소공배수 최소공배수 소수 찾기 소수 구하기 골드바흐의 추측 팩토리얼 팩토리얼 0의 개수 조합 0의 개수 나머지 //첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다. import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int A, B, C; A = sc.nextInt(); B = sc.nextInt(); C = sc.nextInt(); System.out.println("" + (A+B)%C); System.o..
910 - 문자열 알고리즘 1 문자열 매칭 알고리즘 KMP, 라빈 카프, 해싱, 트라이, 아호 코라식에 대해서 알아봅니다. 1500 - 문자열 알고리즘 2 접미사 배열을 활용한 문제들을 해결해봅니다. ● 백준 코드플러스 알고리즘 강의 후기 - 중급2 - 문자열 알고리즘 1 강의: KMP 문자열 검색 알고리즘 문자열 S에서 패턴 P를 찾는 알고리즘 S에서 가장 먼저 나타나는 P 혹은 모든 P를 찾는 문제이다. 방법1. 모든 경우를 다 해볼경우 O(|S|X|P|) 234로 바뀔때, 23은 간단히 계산하여 치환하고, 4만 더하면 된다. 소수 127을 이용하여 mod연산을 시켜준다. 라빈 카프를 구현할 때는 진법과 소수를 잘 정해서 비교가 최소로 일어나게 구현해야 한다. 이것저것 해보면서, 문제마다 가장 좋은 ..
www.acmicpc.net/workbook/view/3977 문제집: 알고리즘 중급 1/3 (baekjoon) www.acmicpc.net 710 - 그리디 알고리즘 동전 0 회의실배정 ATM 행렬 전구와 스위치 동전 뒤집기 보석 도둑 순회강연 가장 긴 증가하는 부분 수열 2 1 www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net import java.io.FileInputStream; impor..
백준/BOJ/코드플러스/알고리즘강의 참고: 강의수강 하지 않았습니다. 잘못된 내용이나, 더 좋은 방법이 있으면 알려주시면 감사하겠습니다. 500 - 브루트 포스 일곱 난쟁이 사탕 게임 날짜 계산 리모컨 테트로미노 카잉 달력 수 이어 쓰기 1 1, 2, 3 더하기 510 - 브루트 포스 (N과 M) N과 M (1) N과 M (2) N과 M (3) N과 M (4) N과 M (5) N과 M (6) N과 M (7) N과 M (8) N과 M (9) N과 M (10) N과 M (11) N과 M (12) 520 - 브루트 포스 - 순열 다음 순열 이전 순열 모든 순열 차이를 최대로 외판원 순회 2 로또 530 - 브루트 포스 - 재귀 1, 2, 3 더하기 암호 만들기 퇴사 스타트와 링크 링크와 스타트 부등호 맞춰봐 ..
백준 알고리즘 기초 강의 후기 - 기초1은 여기에서 보실 수 있습니다. https://inner-game.tistory.com/256 백준 알고리즘 강의 후기(코드플러스): 기초1 알고리즘 기초 1/2 프로그래밍 언어 (C++, Java)를 할 줄 알고, 기초 알고리즘을 배우는 강의입니다. 전체 강의 구성은 https://code.plus/notice/16 를 참고해주세요. 알고리즘 기초1 강의 링크: https://code.. inner-game.tistory.com 백준 코드플러스 알고리즘 강의 기초2 개요 알고리즘 기초2 강의 후기입니다. 코드플러스의 전체 강의 구성은 https://code.plus/notice/16 를 참고해주세요. 알고리즘 기초2 강의 구성은 https://code.plus/c..
알고리즘 기초 1/2 프로그래밍 언어 (C++, Java)를 할 줄 알고, 기초 알고리즘을 배우는 강의입니다. 전체 강의 구성은 https://code.plus/notice/16 를 참고해주세요. 알고리즘 기초1 강의 링크: https://code.plus/course/41 ● 100 - 알고리즘 시작 먼저, 알고리즘이 무엇인지, 어떻게 공부하는 것이 좋은지 알아봅니다. 그 다음으로 알고리즘의 효율성을 측정하는 방법 중 하나인 시간 복잡도에 대해서 배워봅니다. 내용을쓰세요 이 강의('알고리즘 시작')는 정말 좋은 강의이기 때문에 꼭 들으셔야 합니다. 구) 알고리즘 기초 : 맛보기 강의 - 정리 알고리즘: 알고리즘이란 어떤 문제를 해결하기 위한 여러 동작들의 모임 알고리즘 공부에 가장 효과적인 방법 -> ..
코드플러스에서 백준 알고리즘 강의(알고리즘 고급으로 가는 연결고리)를 듣고 작성한 후기입니다. 1700 - 네트워크 플로우 최대 유량 열혈강호 열혈강호 2 열혈강호 3 열혈강호 4 축사 배정 노트북의 주인을 찾아서 상어의 저녁식사 강의: 최대유량 포드풀커슨 배움 : DFS이용 O(EF) 에드먼드-카프 배움: BFS아용 O(VE^2) 네트워크플로우->그래프설계능력이 중요 강의: 이분매칭(최대유량으로 많이 푸는 문제) 강의: 최소컷(최대유량으로 많이 푸는 문제) 학교 가지마! 학교 가지마! 강의: 최소버텍스커버(최대유량으로 많이 푸는 문제) 정점 집합 S가 있을 때, 모든 간선의 양 끝점중 하나가 S에 포함되어 있어야 함 Minimun Vertext Cover Konig's theorem 이분그래프 최소 버..
1230 - 세그먼트 트리 최솟값 수열과 쿼리 17 11/20 [세그먼트 트리] RMQ ( Range Minimum Query ) 공부할땐 앞에 방법도 괜찮지만, 대회에서는 최소값 구할때 무조건 세그먼트 트리. 왜냐하면 이것은 O(sqrt(N))을 O(logN)으로 줄인것이기 때문이다.) DP는 변경이 복잡해서 세그먼트트리가 무조건 좋다. 매우 중요한 자료구조니까 꼭 스스로 코딩해보세요. 11/23 [참고] 잠이와서 좀.. 소스코드 특히 다시 한번 보자. 12/13 필기하던거 다 날아감.ㅠㅠ 1. 루트N으로 나누기 sqrt decomposition 2. dp - 트리2에서 LCA랑 비슷하다. 앞쪽과 뒷쪽으로 나누는 dp 3. 세그먼트 트리 : 가장 좋은 방법 ( lgN) : 1,2번은 공부용으로 괜찮지만..
● 1330 - 다이나믹 프로그래밍 5 트리의 독립집합 트리의 독립집합 그래프의 독립집합은 구할수 없지만, 트리의 독립집합은 다이나믹으로 구할수 있다. D[V][0]:V가 포함되지않음 사회망서비스(SNS) 얼리어답터 문제 사회망 서비스(SNS) 앞의 문제랑 비슷하다. 트리나라 트리나라 ??? 1,2,3 더하기 2 1, 2, 3 더하기 2 k번째를 구하려면 우선 전체 방법의 수를 알아야 한다. D[n-1]: 1로 시작하는 합의 개수 D[n-2] D[n-3]: 3으로 시작하는.. K번째 괄호 문자열 K번째 괄호 문자열 D[N][L]: 길이가 N인 괄호 문자열의 개수 L:짝이 맞지 않은 여는 괄호의 개수 L의 값이 음수가 나오는 경우는 올바른 괄호 문자열이 아니다. 한번 짝이 맞지 않아버리면 그 뒤도 계속 짝..
코드플러스에서 백준 알고리즘 고급으로1 강의를 듣고 개인적으로 정리한 강의 후기 입니다. ● 1320 - 다이나믹 프로그래밍 4 강의: DP4-1 1. 비트마스크 + 다이나믹 2. 행렬 + 다이나믹 에 대해서 배우겠습니다. 백준 2133 타일채우기 타일 채우기 타일채우기 ( 비트마스크 다이나믹 알아보기 ) 기준은 열로 하겠다. 열마다 2^3 경우의 수 가능. 왜냐하면 3xn 이기 때문이다. 열기준으로 1부터 ...n까지 채우겠다. 0~7까지 상태 중, 그 앞에 올수있는 상태 찾기. 상태는 사실비트마스크다. 000, 001, 010 이런식. 3xi를 채운다는것. i열은 빈칸이 있어도 되지만, 1~ i-1 열은 빈칸이 없어야 한다. 점화식 만들고, 정답은 D[N][7] 에 있다. 백준 2098 외판원 순회 ..
백준/BOJ/코드플러스/알고리즘 강의 후기 1/2 1강 ● 1300 - 다이나믹 프로그래밍 3 알약 욕심쟁이 판다 내리막 길 가장 큰 정사각형 1, 2, 3 더하기 7 1, 2, 3 더하기 9 고층 빌딩 홍준이의 친위대 : 여기까지 2강 좋아하는 배열 : 여기부터 3강 방법을 출력하지 않는 숫자 맞추기 숫자 맞추기 자물쇠 알약 한조각 F, 반조각 F 반조각: (F, H) -> (F-1, H+1) 한조각: (F, H) -> (F, H-1) 초기값은 D[0][0] = 1
백준/BOJ/코드플러스/알고리즘 강의 후기 수강신청해서 보세요~! 정말 돈 하나도 안아깝습니다. :) 12/31 복습: 처음부터~ 1/2 복습: 연습1~ ● 1000 - 다이나믹 프로그래밍 2 - 25/15/32분 이동하기 점프 점프 퇴사 2 팰린드롬? 1, 2, 3 더하기 4 파일 합치기 평범한 배낭 기타리스트 뮤탈리스크 괄호 백준 11048 이동하기 www.acmicpc.net/problem/11048 여러가지방법으로 다이나믹을 푸는것을 설명하는 강의 특징1. 큰문제에서 작아지고 있다. => DP 특징2. 한번 오른쪽이나 아래로 가면 되돌아갈 수 없다. 방법1. 점화식 max(어디서 올때 가장큰가) + 현재값 다이나믹에서는 0으로 초기화해놓고 인덱스1부터 쓰는것이 좋을때가 많다. 방법2. 점화식 어디..
● 400 - 다이나믹 프로그래밍 1 다이나믹 프로그래밍이 무엇인지, 난이도가 가장 낮은 문제들을 이용해 다이나믹 프로그래밍을 이해해 봅니다. 아래의 다이나믹 프로그래밍 프로그래밍1) 맛보기 강의를 가져왔다. code.plus/lecture/108 피보나치수를 예를 들어서 설명해 준다. 메모이제이션을 설명해준다. 탑다운과 바텀업도 알려준다. 탑다운 -> 재귀함수 바텀업 -> 작은문제부터 차례대로 푼다. f[0] = 0; f[1] = 1; for(int i ~ 이런 스타일 문제풀이전략 - 점화식을 만들자. - 문제를 많이 풀면서 감을 잡는것이 중요하다. ● 400 - 다이나믹 프로그래밍 1 1로 만들기 2×n 타일링 2×n 타일링 2 1, 2, 3 더하기 카드 구매하기 카드 구매하기 2 1, 2, 3 더하..
강의 업로드가 진행 중인것 같습니다. https://code.plus/notice/26 백준 알고리즘 강의 - 고급: 강의 개요 강의명: 알고리즘 고급 강사: 최백준 수강일: 결제일로부터 30일 가격: 99,000원 할인가: 99,000원 난이도: 상급 사용 언어: C++, Java 교재: pdf 파일 총시간: 1시간 54분 35초 백준 알고리즘 강의 - 고급: 강의 목차 1730 - 그래프 3 SCC, 단절점, 단절선, BCC에 대해서 알아봅니다 1740 - 네트워크 플로우 3 다양한 네트워크 플로우 문제들을 풀어봅니다. 1800 - 다이나믹 프로그래밍 6 확률/기댓값 다이나믹 프로그래밍에 대해서 알아봅니다 1810 - 다이나믹 프로그래밍 7 Knuth Optimization, Convex Hull O..
SW 역량 테스트 준비 - 문제 2 code.plus/course/40 총 4개의 알고리즘 (시뮬레이션, 브루트 포스, BFS, 다이나믹 프로그래밍)의 문제 풀이를 위주로 수업을 진행합니다. 이 강의는 4개로 이루어진 강의의 일부입니다. SW 역량 테스트 준비 - 기초: 브루트 포스, BFS, 다이나믹 프로그래밍에 대한 설명과 기초 문제를 풀어봅니다. SW 역량 테스트 준비 - 연습: 기초에서 설명한 알고리즘의 여러가지 연습 문제를 풀어봅니다. SW 역량 테스트 준비 - 문제: 다양한 문제 풀이를 통해 여러가지 알고리즘을 연습해 봅니다. SW 역량 테스트 준비 - 문제 2: 다양한 문제 풀이를 통해 여러가지 알고리즘을 더 연습해 봅니다. 강의에 사용하는 언어는 C++, Java, Python이며, BOJ..
SW 역량 테스트 준비 - 문제 code.plus/course/34 총 4개의 알고리즘 (시뮬레이션, 브루트 포스, BFS, 다이나믹 프로그래밍)의 문제 풀이를 위주로 수업을 진행합니다. 이 강의는 4개로 이루어진 강의의 일부입니다. SW 역량 테스트 준비 - 기초: 브루트 포스, BFS, 다이나믹 프로그래밍에 대한 설명과 기초 문제를 풀어봅니다. SW 역량 테스트 준비 - 연습: 기초에서 설명한 알고리즘의 여러가지 연습 문제를 풀어봅니다. SW 역량 테스트 준비 - 문제: 다양한 문제 풀이를 통해 여러가지 알고리즘을 연습해 봅니다. SW 역량 테스트 준비 - 문제 2: 다양한 문제 풀이를 통해 여러가지 알고리즘을 더 연습해 봅니다. 강의에 사용하는 언어는 C++, Java, Python이며, BOJ에서..
SW 역량 테스트 준비 - 연습 code.plus/course/33 총 3개의 알고리즘 (브루트 포스, BFS, 다이나믹 프로그래밍)의 문제 풀이를 위주로 수업을 진행합니다. 이 강의는 4개로 이루어진 강의의 일부입니다. SW 역량 테스트 준비 - 기초: 브루트 포스, BFS, 다이나믹 프로그래밍에 대한 설명과 기초 문제를 풀어봅니다. SW 역량 테스트 준비 - 연습: 기초에서 설명한 알고리즘의 여러가지 연습 문제를 풀어봅니다. SW 역량 테스트 준비 - 문제: 다양한 문제 풀이를 통해 여러가지 알고리즘을 연습해 봅니다. SW 역량 테스트 준비 - 문제 2: 다양한 문제 풀이를 통해 여러가지 알고리즘을 더 연습해 봅니다. 강의에 사용하는 언어는 C++, Java, Python이며, BOJ에서 C++14,..
SW 역량 테스트 준비 - 기초 code.plus/course/32 총 3개의 알고리즘 (브루트 포스, BFS, 다이나믹 프로그래밍)을 위주로 수업을 진행합니다. 이 강의는 4개로 이루어진 강의의 일부입니다. SW 역량 테스트 준비 - 기초: 브루트 포스, BFS, 다이나믹 프로그래밍에 대한 설명과 기초 문제를 풀어봅니다. SW 역량 테스트 준비 - 연습: 기초에서 설명한 알고리즘의 여러가지 연습 문제를 풀어봅니다. SW 역량 테스트 준비 - 문제: 다양한 문제 풀이를 통해 여러가지 알고리즘을 연습해 봅니다. SW 역량 테스트 준비 - 문제 2: 다양한 문제 풀이를 통해 여러가지 알고리즘을 더 연습해 봅니다. 강의에 사용하는 언어는 C++, Java, Python이며, BOJ에서 C++14, Java, ..
(구) 알고리즘 문제 풀이 1 다양한 알고리즘 문제를 풉니다. 포함되어 있는 문제 1. 알고리즘 문제 풀이 1-1 도로포장 K번째 최단경로 찾기 길의 개수 도시 분할 계획 전구와 스위치 동전 뒤집기 동전 뒤집기 최대 곱 로봇 조종하기 종점 금민수의 개수 금민수의 합 동민 수열 제곱 ㄴㄴ 수 제곱 ㄴㄴ 2. 알고리즘 문제 풀이 1-2 락스타 락동호 영식이와 친구들 소풍 바이너리 파워 비숍 데크 소트 가운데를 말해요 주민등록번호 멀티탭 스케줄링 Pibonacci 레이싱결과 진영 순열 연료 채우기 3. 알고리즘 문제 풀이 1-3 버블 정렬 사분면 우수 마을 신입 사원 수들의 합 3 수들의 합 4 무한이진트리 순회강연 두 배열의 합 금고 테스트 암호화 알고리즘의 약점 단말 정점들의 거리 X와 K 두 수열 4. ..
(구) 다이나믹 프로그래밍 문제 풀이 2 다이나믹 프로그래밍 문제를 풉니다. 포함되어 있는 문제 1. DP 문제풀이 2-1 2차원 배열의 합 상자넣기 동전 벽장문의 이동 이항 계수 2 선물 전달 타일 채우기 커플 만들기 막대기 암호 경로 찾기 최고의 팀 만들기 사과와 바나나 DNA 발견 Acka 플레이리스트 좋아하는 배열 박스 안의 열쇠 트리나라 2. DP 문제풀이 2-2 제단 수학 게임 즐거운 단어 구슬 없애기 내한 공연 혼란 ACM GMO N-Rook II ntopia 좋아하는 배열 2 3. DP 문제풀이 2-3 알고리즘 기말고사 홍준이의 친위대 다이아몬드 대충 정렬 바이너리 트리 생산 공정 책장제작 매수 ls 나무 옮기기 DNA 복사 카우보이 정수 게임 팔굽혀펴기 나이트 ACGU 4. DP 문제풀이..
(구) 다이나믹 프로그래밍 문제 풀이 1 다이나믹 프로그래밍 문제를 풉니다. 포함되어 있는 문제 1. DP 문제풀이 1-1 RGB거리 숫자삼각형 동물원 욕심쟁이 판다 극장 좌석 기지국 자물쇠 신나는 함수 실행 1학년 조 짜기 문자열과 점수 무한 수열 크리스마스 트리 집합의 개수 숫자 박스 RPG 두부장수 장홍준 NP-hard 카드놀이 이진수 찾기 2. DP 문제풀이 1-2 등차수열 사전 테트리스 공통 부분 문자열 LCS LCS 2 LCS 3 팰린드롬 만들기 팰린드롬 파티션 점프 점프 비즈 공예 3. DP 문제풀이 1-3 소형기관차 괄호 문자열 무글 맵스 인접한 비트의 개수 알 수 없는 문장 로또 서로소의 개수 007 소수 만들기 문자열 거리 피보나치 단어 정상 회담 2 같은 탑 모노디지털 표현 크리보드 ..
(구) 다이나믹 프로그래밍 1. 다이나믹 프로그래밍 1 많은 사람들이 어려워 하는 다이나믹 프로그래밍을 쉽고 이해가기 쉽게 가르칩니다. 먼저, 이번 챕터에서는 다이나믹 프로그래밍이 뭔지를 배우게 되며, 약 20가지 문제 풀이를 통해서 다이나믹 프로그래밍을 연습합니다. 2. 다이나믹 프로그래밍 2 한 문제를 5가지 방법으로 접근해서 풀어보면서, 다이나믹 프로그래밍에 대한 이해를 높입니다. 그 다음, 다이나믹 프로그래밍 1에서 배운 문제보다 조금 더 어려운 문제를 풉니다. 3. 다이나믹 프로그래밍 3 비트마스크를 이용해 상태를 나타내고 그 상태를 다이나믹에 이용해 봅니다. 약 10개의 문제를 풀게 됩니다. 마지막으로는 한 문제를 5가지 서로 다른 점화식을 통해서 풀어봅니다. 4. 다이나믹 프로그래밍 4 다이..
(구) 알고리즘 고급 1. 그래프 알고리즘 3 먼저 오일러 회로를 구하는 방법을 배웁니다. 그 다음 강한 연결 요소 (SCC)을 구하는 Kosaju's Algorithm과 Tarjan's Algorithm을 배웁니다. 여기서 DFS Tree에 대한 내용도 배웁니다. 그 다음, Tarjan's Algorithm을 응용해 단절점과 단절선을 구하는 방법을 배우고, 문제 풀이로 응용해 봅니다. 마지막으로 배우는 내용은 2-SAT 문제 입니다. 2. 다이나믹 프로그래밍 4 다이나믹 프로그래밍 4에서는 지금까지 다루지 않았던 다양한 유형의 다이나믹 문제를 풀어봅니다. 트리 다이나믹, 왼쪽과 오른쪽을 왔다갔다 하면서 푸는 다이나믹, 다이나믹 점화식을 통해서 정답을 역추적하는 방법, 확률 다이나믹, 왼쪽과 오른쪽에서 ..
(구) 알고리즘 고급으로 가는 연결고리 1. 다이나믹 프로그래밍 3 비트마스크를 이용해 상태를 나타내고 그 상태를 다이나믹에 이용해 봅니다. 약 10개의 문제를 풀게 됩니다. 마지막으로는 한 문제를 5가지 서로 다른 점화식을 통해서 풀어봅니다. 2. 네트워크 플로우 그래프에서 가장 중요한 알고리즘인 네트워크 플로우를 배웁니다. 최대 유량이 무엇인지를 배우고, 최대 유량을 구하는 두 가지 알고리즘인 Ford-Fulkerson과 Edmond-Karp에 대해서 배웁니다. 이분 매칭, 민 컷, 최소 버텍스 커버, 최대 독립 집합에 대한 이론과 내용을 공부하고, 문제 풀이에 응용해 봅니다. 이 챕터는 알고리즘보다 그래프를 만드는 방법이 중요하기 때문에, 약 15가지 문제를 이용해 그래프 모델링을 연습해봅니다. 3..
2016 SW 역량 테스트 대비 SW 역량 테스트에 주로 나오는 BFS/DFS/다이나믹 프로그래밍 관련 강의입니다. 1. 알고리즘과 입/출력 먼저 알고리즘이 무엇인지에 대해서 간략하게 배웁니다. 그 다음, 알고리즘을 공부하는 방법을 배웁니다. 알고리즘에서 가장 중요한 것은 시간이 얼마나 걸릴지 예측하는 능력이기 때문에, 시간 복잡도를 가장 첫 번재로 배웁니다. 알고리즘은 문제 풀이를 통해서 공부하는 것이 가장 효율적이기 때문에, 입/출력을 받는 방법을 배웁니다. 다양한 예제 문제 (A+B)를 통해서 다양한 입력 형식 (단일 입력, 테스트 케이스, EOF)을 처리하는 방법을 배웁니다. 2. 완전 탐색 0 (모든 경우 다 해보기 전에) 완전 탐색 1에 필요한 두 가지 내용을 먼저 다루는 부분입니다. 이번 챕..
(구) 알고리즘 중급 - Part 2/2 1. 다이나믹 프로그래밍 2 한 문제를 5가지 방법으로 접근해서 풀어보면서, 다이나믹 프로그래밍에 대한 이해를 높입니다. 그 다음, 다이나믹 프로그래밍 1에서 배운 문제보다 조금 더 어려운 문제를 풉니다. 2. 수학 2 수학 2는 알고리즘 보다는 다른 문제를 풀 때 필요한 경우가 많아서 배우는 부분입니다. a^b 제곱 연산을 분할 정복 알고리즘을 이용해서 구하는 방법, 이진수의 원리를 이용해서 구하는 방법을 배웁니다. 그 다음은 행렬에 대한 내용을 간단히 짚고 넘어갑니다. 이제, 피보나치에 관심있는 사람들이 가장 재미있어하는 내용입니다. 바로 피보나치 수에 대해서 배웁니다. 피보나치 수를 구하는 다양한 방법, 피사노 주기, 피보나치 수의 다양한 성질, 피보나치 수..
(구) 알고리즘 중급 - Part 1/2 1. 그리디 알고리즘 그리디 알고리즘을 배웁니다. 많은 사람들이 착각하는 것이 그리디 알고리즘은 쉽다 입니다. 이 챕터에서는 그리디 알고리즘은 어렵지만 풀 수 있다를 배웁니다. 그리디 알고리즘은 증명이 중요하기 때문에, 일부 문제의 경우는 수업 시간에 증명을 합니다. 그리디 알고리즘을 잘하는 방법은 다이나믹 프로그래밍과 마찬가지로 다양한 문제를 푸는 것 입니다. 그리디 알고리즘 챕터도 약 10가지 문제를 통해서 연습을 하게 됩니다. 2. 분할 정복 분할 정복은 문제를 분할한 다음 합쳐서 문제를 푸는 알고리즘입니다. 대표적인 분할 정복 알고리즘인 이분 탐색 알고리즘을 배웁니다. 그 다음에는 대표적인 분할 정복 정렬 알고리즘인 머지 소트와 퀵 소트에 대한 내용을 배웁..