문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

8004 : 아름다운 순열

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 15 •통과: 1 •만든사람: suakii

8004 : 아름다운 순열

시간 2.000s · 메모리 256MB · 제출 15 · 정답 1

문제 설명

정수 $N$이 주어질 때, $1$부터 $N$까지의 수를 각각 한 번씩 사용하여 인접한 두 원소의 차이의 절댓값이 1이 되지 않도록 배열을 만드시오.

만약 이러한 아름다운 순열이 존재하지 않는다면 NO SOLUTION을 출력하십시오.

[제약 조건]
• $1 \le N \le 10^6$

입력 설명

첫째 줄에 정수 $N$이 주어집니다.

출력 설명

조건을 만족하는 순열을 공백으로 구분하여 한 줄에 출력합니다.
조건을 만족하는 순열이 여러 가지인 경우 그 중 아무거나 하나를 출력합니다.
만약 조건을 만족하는 순열이 존재하지 않는다면 NO SOLUTION을 출력합니다.

입력 예시
COPY
복사되었습니다!

5

출력 예시
COPY
복사되었습니다!

2 4 1 3 5

도움

$N=1$일 때는 1이 유일한 해입니다.
$N=2, 3$일 때는 인접한 원소의 차이가 1이 아닌 순열을 만들 수 없으므로 NO SOLUTION입니다.
$N \ge 4$일 때는 모든 짝수를 오름차순으로 먼저 나열(2 4 6 ...)한 후, 모든 홀수를 오름차순으로 나열(1 3 5 ...)하면 인접한 두 수의 차이가 항상 2 이상(짝수 간 차이 2, 홀수 간 차이 2, 짝수와 홀수의 연결 지점 차이 $|(\text{마지막 짝수}) - 1| \ge 3$)이 되어 손쉽게 아름다운 순열을 구성할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘