728x90
https://www.acmicpc.net/problem/21133
백트래킹 알고리즘을 통해 N-Queen 문제 (9633번)을 풀었다..
N-Queen 2는 N-Queen의 심화 문제일거라 생각하고 문제를 읽었는데,
문제 조건은 그냥 n의 값이 커진 것과 시간제한이 확 줄어든 것을 보고 규칙찾기인가 싶었다.
그래서 하나하나 그려보며 규칙을 찾았던 와중, 가장 처음 찾은 규칙
n == even 이면 arr[2]부터 시작하여 2씩 증가하는 부분에 퀸을 놓고, n을 넘어가면 1부터 시작하여 퀸을 놓으면 된다.
n == odd 면 arr[1]부타 시작하여 2씩 증가하는 부분에 퀸을 놓고, n을 넘어가면 2부터 시작하여 퀸을 놓는다.
그래서 구현한 코드
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
31
32
33
|
#include <iostream>
using namespace std;
int main(){
int n, i=1;
cin >> n;
if(n%2!=0){
while(1){
cout << i << "\n";
i+=2;
if(i>n){
i-=n;
}
else if(i==n-1){
cout << i;
break;
}
}
}
else{
i=2;
while(1){
cout << i << "\n";
i+=2;
if(i>n){
i=1;
}
if(i==n-1){
cout << i;
break;
}
}
}
}
|
cs |
그랬더니 331 / 500의 점수가 나왔다.
어딘가 달라지는 부분이 있겠거니 싶어 다른 사람의 코드를 슬쩍 봤는데
6n + 2, 6n + 3인 경우에 따로 구현을 해주었다.
왜인지는 차차 알아보자..
'PS > BOJ' 카테고리의 다른 글
[C++] 백준 1406번: 에디터 - Linked List (0) | 2022.09.28 |
---|---|
[C++] 백준 12865번: 평범한 배낭 - Knapsack (0) | 2022.07.09 |
[C++] 백준 11729번: 하노이 탑 이동 순서 - Recursion (0) | 2022.07.03 |