[알고리즘][C++][DFS] 특정 수 만들기 (MicroSoft 인터뷰 문제)
·
Algorithm
#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; //경로까지 출력하는 코드 int a[11], n, m, cnt = 0, path[10]; void DFS(int L, int sum) { if (L == n + 1) { if (sum == m) { cnt++; for (int i = 1; i < L; i++) { printf("%d ", path[i]); } puts(""); } } else { path[L] = a[L]; DFS(L + 1, sum + a[L]); path[L] = 0; DFS(L + 1, sum); path[L] = -a[L]; DFS(L + 1, sum - a[L]); } } int mai..
내가 정리해본 코딩테스트 문제 유형
·
Algorithm
빈출 유형 `브루트 포스` (완전탐색)`DFS``BFS``시뮬레이션/구현` (문제 풀이 방법을 소스코드로 변환하는 것이 어려움) DP그리디이분탐색투포인터해시맵우선순위 큐   그 외 유형 `어렵게 출제되는 IT기업의 코딩테스트`의 합격선에 들기 위해서는trie 알고리즘 유니온 파인드 크루스칼 알고리즘 트리의 지름 구하기등등을 추가적으로 공부해두는 것이 좋을 것이다.   문제 풀이 전략 팁1. 완전 탐색 도전 (절반 이상이 해결됨)2. 답은 나오지만 시간 및 공간 효율성 문제가 생기면 -> DP, 그리디, 투포인터, 이분 탐색을 떠올려본다.
[백준][c/c++] 2231번: 분해합
·
Algorithm/백준
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연..
[백준][C/C++] 9020번: 골드바흐의 추측
·
Algorithm/백준
https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, ..
[백준][C++] 10870 피보나치 수 5
·
Algorithm/백준
https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 8..