큰 문제를 작은 문제로 나눠서 푸는 알고리즘 더보기 이름에 의미부여 하지 말자.... 다이나믹 = 아무 의미 없음 목차 다이나믹 프로그래밍을 이용해 풀 수 있는 문제의 특징 다이나믹 프로그래밍 구현 방법 다이나믹 프로그래밍 문제 풀이법 다이나믹 프로그래밍 문제 유형 ▶ 다이나믹 프로그래밍을 이용해 풀 수 있는 문제의 특징 1. 중복되는 부분 문제 → 동일한 작은 문제를 반복적으로 해결해야함 ex) 피보나치 수 F0 = 0 F1 = 1 Fn(큰문제) = Fn-1(작은문제) + Fn-2(작은문제) // 점화식을 반복적으로 해결해야 함 2. 최적 부분 구조 → 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다 ex) 피보나치 수 F0 = 0 F1 = 1 Fn(큰문제) ..
분류 전체보기
나머지 연산 최대공약수 / 최소공배수 (유클리드 호제법) 소수 (에라토스테네스의 체) 팩토리얼에서 0의 갯수 구하기(소인수분해) 조합에서 0의 갯수 구하기(소인수분해) ▶ 나머지 연산 (A + B) % M = (A%M + B%M) % M (A * B) % M = (A%M * B%M) % M : 뺄셈의 경우 A%M - B%M가 음수가 나올수도 있으므로 M을 더해준다 (A - B) % M = (A%M - B%M + M) % M : 성립하지 않는다 ! ▶ 최대공약수(GCD) / 최소공배수(LCM) 최대공약수 : A, B 두 수의 공통된 약수중에 가장 큰 수 최소공배수 : 두 수의 공통된 배수 중에 가장 작은 정수 ⊙ 최대공약수 구하기 int g = 1; for (int i=2; i
👩🏻💻 문제링크 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net ✍️ 아이디어 1. 문제 이해 책에서 배운 후위 표기법을 생각하면 되겠구만 우선순위 낮은 녀석(+ , -)이 스택 밑에 깔리고 높은 녀석(* , /)이 위로 올라감 2. 실수한점 : ( 가 나오면 우선순위 상관없이 무조건 스택에 넣었다가 )가 나와야만 연산자가 나올수 있다고 생각함 -> 이러한 생각으로 bool을 이용해서 ( 가 들어온 상태와 안들어온 상태를 나눌려고 했었는데..
1. 덱의 특성을 꼭 사용해야하는 문제는 거의 없음 2. 덱을 구현하면 큐, 스택 둘다 구현한거나 마찬가지 3. 이런 식으로 for 문에서 ch를 매개로 string 형식의 문장을 한글자씩 받아올수 있다(by 단어 뒤집기 문제) #include #include using namespace std; int main() { string s; cin>>s; for(char ch : s) { cout
👩🏻💻 문제링크 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net ✍️ 아이디어 1. 문제 이해 처음엔 스택을 이용하긴 했지만 시간복잡도가 O(N^2)이 나왔다 결국 다른 사람이 문제푼 원리를 보고 O(N)으로 만들었다 2. https://cocoon1787.tistory.com/347 (이 블로그를 보고 아이디어를 얻음) [C/C++] 백준 17298번 - 오큰수 (스택) #include #include #include using namespace st..
html css 클론코딩 할수 있으면 된거임(레이아웃 시스템, 모바일 대응) 클론코딩 https://nomadcoders.co/courses All Courses – 노마드 코더 Nomad Coders 초급부터 고급까지! 니꼬쌤과 함께 풀스택으로 성장하세요! nomadcoders.co js로 웹의 인터렉티브한 부분을 구현하면 된거임 (ex. 모달창, 슬라이더, 메뉴, 드래그앤드랍 html css js 공부 사이트 https://www.codecademy.com/ Learn to Code - for Free | Codecademy Learn the technical skills to get the job you want. Join over 50 million people choosing Codecademy..
👩🏻💻 문제링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net ✍️ 아이디어 1. 문제 이해 탐색이 진행되는 횟수를 기록 해야 함 처음에 while로 구현 하려다가 시간초과남 2. 무조건 dfs/bfs 문제는 방문일지를 만들자 ( 안만들고는 자꾸 에러가 난다 ) ✍️소스코드 #include #include #include using namespace std; int graph[1..
👩🏻💻 문제링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✍️ 아이디어 1. 문제 이해 처음에 연결리스트로 접근 하려고 했다가 너무 복잡해서 dfs 까지만 구현하고 멈춤 배열로 구현 해서 답이 나왔으나 왠지 모르게 틀림 (왜맞틀?) 2. 내가 생각 못한것은 방문했는지 안했는지 방문일지를 따로 만드는것을 생각하지 못했다!! -> 난 결과값 저장공간을 따로 만듬 3. fill_n(visited, 100..