본문 바로가기

분류 전체보기

(111)
백준 10972 다음 순열 문제 링크: https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 말그대로 다음에 올 순열을 출력하는 문제이다. next_permutation이라는 함수를 이용하였고, 그 이용방법을 간단히 보자. 예를 들어, 1 2 3 4 네개의 숫자가 배열 혹은 벡터에 들어있다고 하자. next_permutation(a, a + n) 혹은 next_permutation(v.begin(), v.end()) 를 실행하면 네개의 숫자가 1 2 4 3으로 다음 순열로 바뀌게 되고 함수는 true값을 리턴한다. 만일 주어진 네개의 ..
백준 15657 N과 M (8) 문제 링크: 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 1부터 n까지가 아니라, 주어진 숫자들을 사용하여 중복 조합을 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2..
백준 15656 N과 M (7) 문제 링크: https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. www.acmicpc.net 1부터 n까지가 아닌, 주어진 숫자들을 사용하여 중복 순열을 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include using namespace std; int n, m, a[10], ans[10]; void solve..
백준 15655 N과 M (6) 문제 링크: https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. www.acmicpc.net 1부터 n까지가 아닌, 주어진 숫자들을 이용하여 조합을 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include using namespace std; int n, m, a[10], ans[10]; void solve(in..
백준 15654 N과 M (5) 문제 링크: https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1부터 n까지가 아닌, 주어진 숫자들을 가지고 순열을 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include using namespace std; int n, m, a[10], ans[10]; bool used[10]; voi..
166F Three Variables Game https://atcoder.jp/contests/abc166/tasks/abc166_f F - Three Variables Game AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 세개의 숫자 A, B, C와 N개의 이벤트(AB, AC, BC중에 하나)들이 주어진다. 각 주어진 이벤트의 두개 알파벳중에 하나에 1을 더해주면 다른 하나는 1을 빼주면 된다. N번의 이벤트들을 실행하는중에 A, B, C 중에 하나가 음수가 된다면 실패이고, N번 모두 성공하면 각각의 이벤트마다 1더해준 알파벳들을 출력하면 되는 문제이다. 조..
166E This Message Will Self-Destruct in 5s https://atcoder.jp/contests/abc166/tasks/abc166_e E - This Message Will Self-Destruct in 5s AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 두개의 인덱스의 차이와 각 인덱스에 해당하는 키의 합이 같은 짝의 갯수를 찾는 문제이다. 다시 말해서 j - i = h[j] + h[i] for i < j 인 짝이 몇개인지 찾아야 한다. 이 식을 바꿔보면 i + h[i] = j - h[j]가 된다. 1부터 n까지 h를 입력받을때마다 배열 a에 i + h[i]값을..
백준 15652 N과 M (4) 문제 링크: https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 중복 조합을 출력하는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include using namespace std; int n, m, a[10]; void solve(int start, int idx) { if(idx == m) { for(int i = 0; i