Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 데이터베이스 배움터
- 언리얼 커스텀 플러그인
- 2단계로킹
- Security
- 백준 1253번
- 1967번
- 셰그먼트트리
- OS
- C++
- 비재귀셰그먼트
- 오손데이터읽기
- 1253번
- 1759번
- Linux
- SQL
- hackerank
- 트랜잭션 관리
- UActor
- 5639
- 실습
- 백준
- UnrealMP
- 의미와 무의미의 경계에서
- command not found
- Unreal
- objtofbx
- oracle
- 언리얼 플러그인
- FBX
- 민겸수
Archives
- Today
- Total
fatalite
N-Queens / 9663번 백준 🌋🌋🌋🌋 본문
문제
난이도 : 골드 4
문제 분류 : 백 트래킹
난 바보다!!!!!
해결 방법
#include <iostream>
#include <vector>
#include <utility>
#include <cmath>
#include <queue>
#include <algorithm>
#include <deque>
#include <set>
#include <map>
#include <unordered_map>
#include <string>
#include <unordered_set>
using namespace std;
int n;
int Queen[100];
int Result = 0;
void Init()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
bool IsPromise(int Line)
{
for (int i = 0; i < Line; i++)
{
if (Queen[i] == Queen[Line]
||
abs(Queen[i] - Queen[Line]) == abs(i - Line))
{
return false;
}
}
return true;
}
void Simulate(int Line)
{
if (Line == n)
{
Result++;
}
else
{
for (int CurRow = 0; CurRow < n; CurRow++)
{
// 순서가 중요! 일단 놓는다.
// 다녀오면 자연스럽게 지워진다. (다음 행으로 가므로)
Queen[Line] = CurRow;
if (IsPromise(Line))
{
Simulate(Line + 1);
}
}
}
return;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
Queen[i] = -1;
}
Simulate(0);
cout << Result;
}
'코딩 인터뷰 > C++' 카테고리의 다른 글
암호 만들기 / 1759번 백준 (0) | 2023.09.04 |
---|---|
치킨 배달 / 15686번 백준 (4) | 2023.09.03 |
CCW - 백준 11758번 (0) | 2023.07.29 |
이분 그래프 - 백준 1707 (0) | 2023.05.22 |
☆ 용액 - 백준 2467 (0) | 2023.04.11 |