완전탐색(4)
-
[백준/BOJ] 백준 2231번 : 분해합
https://www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+ www.acmicpc.net 완전 탐색(브루트 포스)을 통해 문제를 해결하였다. 문자열로 n을 입력받고 n의 가장 작은 생성자를 찾기 위해 0부터 n의 생성자가 맞는지 확인하였다. 코드 #include #include #include #include using namespace std; int solve(string n) { int ret = 987654321; //0부터 생성자를 찾는다. for (..
2020.06.03 -
[백준/BOJ] 백준 14501번 : 퇴사
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 완전 탐색(브루트 포스)을 이용해 문제를 풀었다. 가능한 상담을 모두 탐색해, 최대 이익을 얻었다. 어떠한 상담을 하는데 그 일이 퇴사일 이상 끝날 때의 상담은 추가하지 않았지만, 정확히 퇴사일 전날 끝나는 상담이라면 추가하였다. 이러한 판단은 어떠한 상담을 하고 난 다음, 상담 가능한 최소 날짜를 만들어 구분하였는데, 만약 상담 A를 하고 난 뒤, 다음에 상담할 수 있는 최소 날짜가 정확히 퇴사일이라면, 상담 A를 끝나면 퇴사일 전날이라 가능하고, 최소 날짜가 그 이후라면 상담 A는 불가능하다. 코드 #include #include..
2020.06.03 -
[백준/BOJ] 백준 2309번 : 일곱 난쟁이
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 완전탐색(브루트포스)을 이용해 난쟁이가 아닐것 같은 후보 2명을 뽑아서 정말 난쟁이가 아닌지 확인한다. 확인 방법은 전체 합에서 난쟁이가 아닐것 같은 후보 2명의 합을 빼서 판단한다. 2명을 뽑는 조합이므로 중복된 조합이 나타나지 않게 하였다. 코드 #include #include #include using namespace std; int sum = 0; //일곱 난쟁이가 아닌 사람을 찾는다 bool c..
2020.06.02 -
[백준/BOJ] 백준 1065번 : 한수
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 �� www.acmicpc.net 1부터 N까지 한수의 개수를 찾아내는 완전 탐색(브루트 포스) 문제이다. 1부터 N까지 한수인지 아닌지를 파악해 개수를 센다. 코드 #include #include using namespace std; bool check(string num) //한수인지를 체크한다. { bool ret = true; int num1; int num2; int num3; if (num.size() < 3)//두자..
2020.06.01