백준 25184 - 동가수열 구하기

곽무경·2022년 5월 20일
0

Baekjoon

목록 보기
5/14

25184 - 동가수열 구하기 https://www.acmicpc.net/problem/25184

티어 - Silver 4
알고리즘 분류 - 구성적
나의 해결 방안 - ?

문제

길이가 NN인 동가수열은 다음 두 조건을 만족하는 수열이다.
동가수열은 11 이상 NN 이하인 정수로 이루어져 있고, 모든 원소는 서로 다르다.
동가수열의 서로 이웃한 원소의 차는 N2\lfloor \frac{N}{2} \rfloor이상이다.
길이가 NN인 동가수열을 아무거나 하나 구해보자. 주어지는 모든 입력에 대해 동가수열은 항상 존재한다.

입력

첫째 줄에 구하고자 하는 동가수열의 길이 NN(1N50001 \le N \le 5\,000)이 주어진다.

출력

첫째 줄에 길이가 NN인 동가수열을 아무거나 하나 출력한다. 동가수열은 공백으로 구분해서 출력해야 한다.

#include <iostream>

using namespace std;

int main(void) {
    ios_base::sync_with_stdio(0);
	int n; cin >> n;
	if (n<=4) {
		if (n==1) cout << 1;
		else if (n==2) cout << "1 2";
		else if (n==3) cout << "1 2 3";
		else cout << "2 4 1 3";
		return 0;
	}
	if (n%2==1) {
	cout << 1 << " " << n/2+1 << " " << n;
	for(int i=n/2;i>=2;i--) {
		cout << " " << i << " " << i+n/2;
	}
	}
	else {
		for(int i=n/2;i>=1;i--) cout << i << " " << i+n/2 << " ";
	}
}

0개의 댓글