diff --git a/백준/Silver/30618. donstructive/README.md b/백준/Silver/30618. donstructive/README.md
new file mode 100644
index 0000000..42a5590
--- /dev/null
+++ b/백준/Silver/30618. donstructive/README.md
@@ -0,0 +1,37 @@
+# [Silver IV] donstructive - 30618
+
+[문제 링크](https://www.acmicpc.net/problem/30618)
+
+### 성능 요약
+
+메모리: 45836 KB, 시간: 108 ms
+
+### 분류
+
+해 구성하기
+
+### 제출 일자
+
+2026년 2월 9일 20:43:33
+
+### 문제 설명
+
+
순열은 $1$부터 $N$까지 $N$개의 정수가 각각 한 번씩 나오는 수열이다. 예를 들어, $[1]$, $[3, 5, 2, 1, 4]$, $[1, 3, 2]$는 순열이지만, $[2, 3, 2]$, $[4, 3, 1]$, $[0]$은 순열이 아니다.
+
+순열의 점수는 다음과 같은 방법으로 구한다.
+
+
+ - 순열의 모든 연속 부분 수열 각각에 대해 원소의 합을 구한다.
+ - 순열의 점수는 (1)에서 구한 모든 값의 합이다.
+
+
+길이가 $N$인 모든 순열 중에서 점수가 가장 높은 순열을 구해보자. 점수가 가장 높은 순열이 여러 가지라면 그 중 아무거나 하나를 출력한다.
+
+### 입력
+
+ 첫째 줄에 구하고자 하는 순열의 길이 $N$이 주어진다. $(1 \le N \le 200\,000)$
+
+### 출력
+
+ 첫째 줄에 점수가 가장 높은 순열에 해당하는 $N$개의 정수를 공백으로 구분해서 출력한다.
+
diff --git a/백준/Silver/30618. donstructive/donstructive.py b/백준/Silver/30618. donstructive/donstructive.py
new file mode 100644
index 0000000..cc3bb5e
--- /dev/null
+++ b/백준/Silver/30618. donstructive/donstructive.py
@@ -0,0 +1,8 @@
+import sys
+input = sys.stdin.readline
+
+n = int(input())
+odds = list(range(1, n + 1, 2)) # 1,3,5,...
+evens = list(range(2, n + 1, 2))[::-1] # ...,4,2 (내림차순)
+ans = odds + evens
+print(*ans)
\ No newline at end of file