반응형
https://www.acmicpc.net/problem/9663
9663번: N-Queen
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
- 문제
N * N 크기의 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓을 수 있는 방법의 수를 구하는 문제다.
- 해설
queen까지는 만들었는데, check을 할때 대각선을 어떻게 해야 할 지 생각을 못해서 check는 다른 사람꺼를 조금 참고했습니다.
y의 차이가 x의 차이랑 같으면 대각선이다 라는걸 생각 못해서 for문 두개 돌려서 찾고 있었네요.
- 풀이
#include <iostream>
using namespace std;
int board[15] = {
0,
};
int total = 0;
bool check(int cnt)
{
for (int i = 0; i < cnt; i++)
{
if (board[i] == board[cnt] || abs(board[cnt] - board[i]) == cnt - i)
{
return false;
}
}
return true;
}
void queen(int cnt, int N)
{
if (cnt == N)
{
total++;
return;
}
for (int i = 0; i < N; i++)
{
board[cnt] = i;
if (check(cnt))
{
queen(cnt + 1, N);
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, answer;
cin >> N;
queen(0, N);
cout << total;
}
- 새롭게 알게 된 점
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준][C++] 1904: 01타일 (0) | 2022.10.31 |
---|---|
[백준][C++] 9184: 신나는 함수 실행 (0) | 2022.10.31 |
[백준][C++] 15652 : N과 M (4) (0) | 2022.10.23 |
[백준][C++] 15649 : N과 M (3) (0) | 2022.10.22 |
[백준][C++] 15649 : N과 M (2) (0) | 2022.10.22 |