목록알고리즘 문제 풀이 (61)
굥뷰를 햡시댜
https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 중복된 값을 허락하지 않는 중복 순열 입니다. dfs와 백트래킹으로 중복 순열을 구현했고 중복된 값의 처리는 map을 이용했습니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int n, m; vector vec, sel; map dict; void df..
https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 중복된 값을 허락하지 않고 뽑는 조합 입니다. 중복된 값을 처리하는 방법으로 map을 사용했습니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int n, m; vector vec, sel; map dict; void dfs(int node) { if (..
https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 순열인데 중복되는 것들을 제외하여 값을 출력하는 문제 입니다. n개에서 m개를 선택했을 때 최초의 경우로 생성된 값일 경우 출력하고 이미 출력된 적이 있을 경우 그냥 넘겨주기만 하면 됩니다. 문제는 기존에 생성된 값인지 아닌지 여부를 판단하는 것인데 저는 map을 사용했습니다. 나머지는 백트래킹으로 순열을 구현해서 어려움은 없었습니다. #define _CRT_SECURE_NO_WARNI..
https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. www.acmicpc.net 중복 조합 문제 입니다. 이전 게시물인 N과 M(4)에서 중복 조합에 대한 설명과 풀이 방법에 대해 게시했으니 참고해주세요! (동일한 방법으로 풀었습니다!) #define _CRT_SECURE_NO_WARNINGS ..
https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. www.acmicpc.net 중복순열 문제 입니다. 중복순열에 대한 설명은 이전 게시물 N과 M(3)에서 했기 때문에 설명은 넘어가겠습니다. 풀이 방법도 N과 M(3)과 동일하게 풀면 됩니다. (대신 입력 받은 값들을 한번 정렬을 해줘야 합니다.) #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace s..
https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. www.acmicpc.net 조합 문제 입니다. 조합은 이전 게시물 N과 M(2)에서 설명했으므로 설명은 패스! 풀이도 N과 M(2)와 같은 방식으로 풀었습니다. (+ sort로 입력 받은 값들을 정렬만 시켜줬습니다.) #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int n, m; ve..
https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 이전에 풀었던 N과 M(1)과 같은 문제입니다. 입력만 늘어났지 예시를 보시면 순열 문제라는 것을 금방 파악할 수 있습니다. (잘 모르시겠다면 이전 게시물(N과 M(1)문제)을 참고해주세요) 풀이 과정은 다음과 같습니다. 1. 입력을 받고 vec이라는 벡터에도 입력값을 넣어줍니다. 2. vec을 정렬합니다. 3. dfs와 백트래킹으로 모든 순열을 구해줍니다. #define _CRT_SEC..
https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 중복 조합 문제 입니다. 중복 조합이란? -> 서로 다른 n개에서 r개를 순서에 상관 없이 뽑는데 중복을 허용해서 뽑는 경우의 수를 말합니다. 쉽게 예로 들어보겠습니다. n = 4, r = 2이고 모집합이 {1,2,3,4}일 때 순서에 상관 없이 중복을 허용해서 뽑는 경우의 수를 찾아본다면 (1,1), (1,2), (1,3), (1,4) (2,2), (2,3), (2,4) (3,3), ..