[알고리즘 연습] 부분집합 (DFS) 부분집합 자연수 N을 입력받는다. 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하시오. 입력예제 3 출력예제 1 2 3 1 2 1 3 1 2 3 2 3 풀이 #include using namespace std; int n; int ch[11]; void DFS(int level) { if (l > n) { int i; for (i=1; i 💻 CS/알고리즘 연습 2021.02.05
[알고리즘 연습] Ugly Numbers Ugly Numbers 어떤 수를 소인수분해 했을 때 그 소인수가 2 또는 3 또는 5로만 이루어진 수를 'Ugly Number'라고 부른다. (1포함) ex. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... N번째 Ugly Number를 출력하는 프로그램을 작성하시오. 풀이 #include #include #include using namespace std; int main() { int n, i, p2=0, p3=0, p5=0, minValue; cin >> n; vector a(n); a[0] = 1; for(i=1; i 💻 CS/알고리즘 연습 2021.02.02
[알고리즘 연습] 영지 선택 (DP 맛보기) 영지 선택 세로 H, 가로 W의 영지가 있다. 영지의 각 좌표에는 해당 좌표의 오렌지나무 개수정보가 주어진다. 황제가 나에게 이 중 세로 HH, 가로 WW의 영지를 준다고 한다. 그런데 나는 최대한 많은 오렌지나무를 가지고 싶다. 가능한 모든 경우를 찾아 가장 많은 오렌지나무를 얻었을 때의 개수를 출력하시오. 풀이 #include #include using namespace std; int main() { int h, w, hh, ww, i, j, tmp, max=0; cin >> h >> w; vector oranges(h+1, vector(w+1)); vector doranges(h+1, vector(w+1)); for(i=1; i oranges[i][j]; dor.. 💻 CS/알고리즘 연습 2021.02.02
[알고리즘 연습] 콘서트 동영상 저장하기 라이브 동영상 N(1>m; for(i=0;i>temp; a.push_back(temp); end+=temp; } while(start 💻 CS/알고리즘 연습 2021.01.21
[알고리즘 연습] 연속된 자연수의 합 (by. C++) 연속된 자연수의 합 양의 정수 N이 입력 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법 출력 예 : N=15이면 7+8=15, 4+5+6=15, 1+2+3+4+5=15 총 3가지의 경우가 존재한다. 각 경우의 수도 '1 + 2 + 3 + 4 + 5 = 15'의 형태로 출력할 것 (마지막에 경우의 수 출력) 풀이1 (단순접근) #include #include #include using namespace std; int main() { int n, i, p1=1, p2=2, sum, check=0; cin >> n; while (p1 💻 CS/알고리즘 연습 2021.01.18
[알고리즘 연습] 교집합(투포인터 알고리즘) (by. C++) 교집합(투포인터 알고리즘) 정수 N을 입력받고 N개의 정수를 입력받는다. (집합A) 정수 M을 입력받고 M개의 정수를 입력받는다. (집합B) 집합A와 집합B의 교집합을 오름차순으로 정렬하여 출력하시오. 풀이 #include #include #include using namespace std; int main() { int n, m, i, p1=0, p2=0, p3=0; cin >> n; vector a(n); for(i=0; i> a[i]; } sort(a.begin(), a.end()); cin >> m; vector b(m); for(i=0; i> b[i]; } sort(b.begin(), b.end()); vector c(m+n); while(p1 💻 CS/알고리즘 연습 2021.01.17
[알고리즘 연습] 3등의 점수 (by. C++) 3등의 점수 100점 만점 기준의 점수 배열이 N개 주어졌을 때, 이 중 3등의 점수를 찾아 출력하라. 각 등수별 인원은 무시하고, 점수만이 등수의 기준이 된다. (100점 3명, 98점 3명, 95점 3명이면 95점 3명 모두 3등이다.) 풀이 #include #include using namespace std; int main() { int n, i, one, two, three; cin >> n; vector a(n); for(i=0; i> a[i]; } one = -2147000000; two = -2147000000; three = -2147000000; for (i=0; i 💻 CS/알고리즘 연습 2021.01.17
[알고리즘 연습] N!에서 0의 개수 (by. C++) N!의 표현법 정수 N을 입력 받는다. (10 n; vector ch(n+1); for (i=2; i 💻 CS/알고리즘 연습 2021.01.14
[알고리즘 연습] N!의 표현법 (feat. 소인수분해) (by. C++) N!의 표현법 정수 N을 입력 받는다. (N>=2) N!을 소인수 분해하고 이를 N! = a b c d ...의 형태로 표현하라. a b c d는 모두 소수로 작은 숫자부터 차례대로 표현한다. N보다 작은 소수만 표기하면 된다. (5! = 3 1 1 이면 소수 2가 3개, 소수 3이 1개, 소수 5가 1개로 소인수 분해된다는 뜻) 풀이 #include #include using namespace std; int main() { int i, j, n, tmp; cin >> n; vector ch(n+1); for (i=2; i 💻 CS/알고리즘 연습 2021.01.14
[알고리즘 연습] 석차 구하기 (by C++) 석차 구하기 n 입력. n명의 학생들의 성적이 있다. 이 학생들의 성적을 입력받고, 학생들의 등수를 배열 순서대로 출력하라. ex. 90 85 92 95 90 입력 => 3 5 2 1 3 출력 같은 점수의 학생은 높은 등수로 동일하게 처리한다. 단, 그보다 점수가 낮은 학생은 동일한 점수를 가진 학생들만큼 등수가 내려간다. (1등이 3명일 경우 그 다음은 4등) 풀이 #include #include using namespace std; int main() { int i, j, n; cin >> n; vector a(n); vector b(n); for (i=0; i> a[i]; b[i] = 1; } for (i=0; i 💻 CS/알고리즘 연습 2021.01.13