#문제 15657번: N과 M (8) https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net #접근방법 n개의 자연수가 주어졌을 때 오름차순이며 같은 수를 여러 번 골라도 된다. 입력값으로 랜덤의 숫자가 주어지므로 sort함수로 오름차순 정렬을 한 뒤, 모든 수열을 출력하기 위해 백트래킹 기법을 사용하면 된다. #풀이 #include #include using namespace std; int n,m; int arr[10]; int num[1..
#문제 15654번: N과 M (5) https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net #접근방법 n개의 자연수가 주어졌을 때 오름차순이며 중복되는 수열을 여러 번 출력하면 안된다. 입력값으로 랜덤의 숫자가 주어지므로 sort함수로 오름차순 정렬을 한 뒤 중복을 체크하기위해 check 배열을 만들고, 모든 수열을 출력하기 위해 백트래킹 기법을 사용하면 된다. #풀이 #include #include using namespace std; i..
#문제 15652번: N과 M (4) https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #접근방법 이 문제는 어제 푼 문제 15652번 : N과 M (2)와 매우 유사한 문제이다. 자연수 N과 M이 주어졌을 때, 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열을 비내림차순이어야 한다. 위 조건을 만족하는 수열은 같은 수를 허용하는 오름차 순의 길이가 M인 수열이다. 재귀함수로 백트래킹기법을 사용하여 모..
#문제 15650번: N과 M (2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #접근방법 자연수 N과 M이 주어졌을 때, 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 위 조건을 만족하는 길이가 M인 수열을 모두 구하는 문제이다. 재귀함수로 백트래킹기법을 사용하여 모든 조합을 구하면 된다. #풀이 #include int n,m; int arr[10]; void seq(int x,int len..
#문제 2407번: 조합 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net #접근방법 조합을 구하는 식 (nCm = n-1Cm-1 + n-1Cm)을 이용하고, long long 범위를 벗어나는 조합값이 있으므로 string 자료형으로 큰 수 덧셈으로 조합값을 구하면 된다. #풀이 #include using namespace std; string arr[105][105]; string add(string num1, string num2){ string num = ""; int sum = 0; int size = max(num1.size(),num2.size());..
#문제 1546번: 평균 https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net #접근방법 최대값을 구하는 조건문과 새로운 평균을 구하는 계산수식을 잘 작성하면 풀 수 있다. #풀이 #include int main(){ int n,x,max=0; double ans = 0; scanf("%d",&n); for(int i=0;i
#문제 1330번: 두 수 비교하기 https://www.acmicpc.net/problem/1330 1330번: 두 수 비교하기 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. www.acmicpc.net #접근방법 두 정수를 비교하는 다중 조건문으로 정답을 구하면 된다. #풀이 #include using namespace std; int main(){ int A,B; string ans; cin >> A >> B; if(A
#문제 1157번: 단어 공부 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net #접근방법 단어에서 가장 많이 사용된 알파벳을 구하려면 최대값을 찾는 조건문이 필요하고, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우를 고려해야 하므로 최대값과 같은 값이 나오면 예외처리를 해주는 조건문이 필요하다. 이 때, 대문자와 소문자를 구별하지 않는 것을 고려해야 한다. #풀이 #include #include char a[1000005]; int arr[26]; int main(){ in..
#문제 1152번: 단어의 개수 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net #접근방법 공백을 포함한 문자열을 받고 단어의 개수를 출력하면 된다. 1. char 자료형으로 공백을 포함한 문자열을 받는다. 2. 단어는 공백 한 개로 구분이 되므로 이를 이용하여 단어의 개수를 출력한다. #풀이 #include #include char a[1000005]; int main(){ int ans = 0; scanf("%[^\n]s",a); if..