[ 해결 방법 ]시작 점부터 끝점까지 이중 for문을 돌면서 모두 색이 같은지 판단합니다. 만약 색이 다르다면 이중 for문을 돌던 영역을 9등분해서 다시 이중 for문을 돕니다. 모두 같은 숫자의 종이가 될 때까지 계속 돌면 문제를 해결할 수 있습니다. [ 코드 ]#include #define MAX2500using namespace std;struct point{int x, y;}; int N, Type[3];int board[MAX][MAX]; void InData(){cin >> N;for(int i = 1; i board[i][j];} void DQ(point from, point to){int pcr, cr;pcr = board[from.y][from.x]; for(int y = from.y; y
[ 해결 방법 ]원판이 몇 개가 있든 1번 장대에 원판이 2개가 있는 것처럼 생각하면 된다.1번 장대에 원판이 2개 있다고 생각하면 처리 과정은 3단계이다. 1. 1 -> 22. 1 -> 33. 2 -> 3원판이 n개 있을 때는 어떻게 진행할까?제일 위에 원판 n-1개를 묶어서 움직이면 된다. 물론 그렇게 움직이면 안되지만 일단 가능하다고 생각을 해보자. 그러면 위의 경우처럼 3가지 밖에 안나온다. 앞에서 n-1개의 원판을 2번 장대로 옮긴다고 했는데 어떻게 가능할까? 1번장대에서 n-2개의 원판을 3번 장대로 옮겨놓고 제일 아래 원판을 2번장대로 옮겨놓고 다시 3번장대의 n-2개를 2번으로 옮기면 된다. 이것도 3번만에 가능하다.어떻게 해야할지 감이 오지 않나? 재귀적인 방법이 눈에 들어온다. 처음에 ..
[ 해결 방법 ]1에서 n까지의 합은 아래 식과 같다. 이런 식이 어떻게 나왔는지 살펴보자. 예를 들어 6까지 수를 나타내면 다음과 같다. 1, 2, 3, 4, 5, 6 위의 수열의 합을 다음처럼 쉽게 생각할 수 있다. (1 + 6) + (2 + 5) + (3 + 4) = 7 + 7 + 7 = 21 위 식을 자세히 살펴보면, 괄호 안에 첫번째 값은 1씩 증가하고 두 번재 값은 1씩 감소하기 때문에 계속 값이 같은 것이다.이렇게 같은 합의 갯수가 n / 2개가 있다. 당연히 모든 수열을 두 개씩 짝지었기 때문이다.수열의 개수가 짝수개 일때 아래의 식이 만들어진다.그러면, 수열의 개수가 홀수 개일 때도 위 식이 성립할까? 1, 2, 3, 4, 5, 6, 7이 수열을 다음처럼 배치하자. (1 + 7) + (2..