본문 바로가기

재귀함수21

N-Queen - 9663 문제 : https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 : #include #include using namespace std; int N = 0; int maxCount = 0; int arr[4][2] = { {-1, -1}, {-1, 1}, {1, -1}, {1, 1} }; vector temp; bool AddCheck(int i, int j) { for (auto v : temp) { // v.first == i 어차피 동일한 행이 들어올 수 .. 2019. 12. 23.
[모의 SW 역량테스트] 벌꿀채취 - 2115 문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 코드 : #include #include using namespace std; int N, M, C; int num[10][10]; bool check[10][10] = { false }; int honeySum = -2147483647 - 1; int honeyTotal = 0; int maxValue = 0; // M개 벌꿀 중 가장 큰 값 구하기. //line = 가로로 갈수있는 데드.. 2019. 12. 19.
테트로미노 - 14500 (Solve 2) 문제 : https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 기존에는 해당 도형들의 회전된 모든 경우의 수를 구하여서 배열에 적재 후 이를 탐색하여 해결을 하였다. 이 방법도 속도가 .. 2019. 12. 14.
수영장 - 1952 문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq&categoryId=AV5PpFQaAQMDFAUq&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 코드 : #include #include using namespace std; int price[4] = { 0 }; int use[12] = { 0 }; int minPrice = INT32_MAX; //수행되는 month void solution(int month, int sum) { //탈출조건 if (.. 2019. 12. 8.
사다리 조작 - 15684 문제 : https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다. 초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 www.acmicpc.net 코드 : #include #include using namespace std; bool num[31][11] = { fal.. 2019. 12. 8.
퇴사 - 14501 문제 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 : #include using namespace std; int tnum[16] = { 0 }; int pnum[16] = { 0 }; int total = 0; void solution(int day, int sum, int n) { //탈출조건 if(day == n +1)//if (day + tnum[day] - 1 > n) { if (total n + 1) { return; } solution(day + tnum[day], sum + p.. 2019. 12. 3.
부분수열의 합 - 1182 문제 : https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 코드 : #include #include using namespace std; int num[20] = { 0 }; vector temp; int ncount = 0; int n, s; void solution(int index, int sum) { //탈출조건 if (index == n) { if (sum == s) { ncount+=1; } retu.. 2019. 12. 3.
암호 만들기 -1759 문제 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 코드 : #include #include #include using namespace std; vector num; char mon[15] = {}; void solution(int s, int l, int c) { //탈출조건 if (num.size() == l) { //모음 최소 1개, 자음 최소 2개 체크 int m_c = 0; int j_c = 0; for (auto iter = num.. 2019. 12. 3.
연산자 끼워넣기 (2) - 15658 문제 : https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 코드 : #include #include #include using namespace std; int num[11]; int mon[4]; bool check[44] = { false }; int m = 0; int n = 0; int numMa.. 2019. 12. 3.