

https://www.acmicpc.net/problem/27468
[ 문제 요약 ]
정수 N이 주어질 때 1 ~ N까지의 수를 임의의 인접한 세 수 Aₐᵢ, Aₐᵢ₊₁, Aₐᵢ₊₂에 대해 Aₐᵢ₊₁ - Aₐᵢ = Aₐᵢ₊₂ - Aₐᵢ₊₁ × 2 또는 Aₐᵢ₊₁ - Aₐᵢ = Aₐᵢ₊₂ - Aₐᵢ₊₁ × 0.5 조건에 맞는 수열로 출력한다.
[ 문제 풀이 ]
1. 이 문제의 경우 무조건 수열을 만들 수 있기 때문에 만들 수 있는 지 검증하지 않아도 된다.
2. N % 4 == 2 인 경우 2 + 4x, 1 + 4x, 3 + 4x, 4 + 4x 를 반복해서 출력한다.
3. 그 이외의 경우에는 1 + 4x, 3 + 4x, 2 + 4x, 4 + 4x 를 반복해서 출력한다.
[ 소스 코드 ]
#include <bits/stdc++.h>
using namespace std;
int N;
int main() {
cin >> N;
cout << "YES" << "\n";
if (N % 4 == 2){
for (int i=0; i<N; i++){
if (i % 4 == 0) cout << (i + 2);
if (i % 4 == 1) cout << i;
if (i % 4 == 2) cout << (i + 1);
if (i % 4 == 3) cout << (i + 1);
cout << " ";
}
}
else {
for (int i=0; i<N; i++){
if (i % 4 == 0) cout << (i + 1);
if (i % 4 == 1) cout << (i + 2);
if (i % 4 == 2) cout << i;
if (i % 4 == 3) cout << (i + 1);
cout << " ";
}
}
return 0;
}
[ 주의할 점 ]
에드훅 문제이기 때문에 4에서 부터 하나하나 늘려가면서 규칙을 찾아가면서 풀 수 있다.
'백준' 카테고리의 다른 글
| [ 백준 12761 ] 돌다리 (c/c++) (0) | 2025.03.22 |
|---|---|
| [ 백준 17123 ] 배열 놀이 (c/c++) (0) | 2025.03.21 |
| [ 백준 17826 ] 나의 학점은? (c/c++) (0) | 2025.03.20 |
| [ 백준 18428 ] 감시 피하기 (c/c++) (0) | 2025.03.18 |
| [ 백준 1484 ] 다이어트 (c/c++) (0) | 2025.03.17 |