C++ 3

백준 15649번 - N과 M(1) - C++

[문제] https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 문제이다. [코드] #include using namespace std; int n,m; // 3, 1인 경우 int arr[10]; bool isused[10]; void func(int k) // 3 1 인 경우 { if(k == m) { for(int i=0; i

1992번 - 쿼드트리 (C++)

[문제] https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net [풀이] 이전 문제와 똑같이 재귀함수로 푸는 문제이다. vector를 이용하여 쿼드트리를 저장하였음. test함수에서 모두 0, 1로 되어있는지 판단하고, 아니면 false, 맞으면 true 값을 반환하였다. true인 경우 1 혹은 0을 벡터에 넣어 쿼드 트리 완성, 괄호는 재귀함수에 넣을때 같이 벡터에 넣어주었고 숫자 사이에 괄호를 없애서 문제를 풀었다. [코드] #inc..

2630번 - 색종이 만들기 (C++)

[문제] https://www.acmicpc.net/problem/2630 [해결 방법] 우선 void check(int x, int y, int N) 함수를 정의하여, 재귀 함수를 통해 풀려고 하였다. (x, y는 판 내 좌표, N은 전체 종이의 크기) 첫번째로, 일단 (0,0) 좌표와 사용자에게 입력받은 N(그림에서는 8)을 check 함수에 인자로 전달하였다. 그리고 for문을 통해서 check(x,y,N/2)를 통해 (그림 내에서) 8 X 8 -> 4 X 4 -> 2 X 2 -> 1 X 1 이런식으로 분할하려고 하였다. bool test(int x, int y, int N) 은 주어진 좌표에서 (x,y) ~(가로 + N, 세로 + N) 만큼 범위에서 같은 수 인지 아닌지 파악하는 함수이다. 만약 ..