💡 핵심: “50번째 항은 10군의 5번째 위치” → 10군의 첫 항이 1이므로 5번째 항은 5
4. 군수열 응용 실습
다음과 같은 규칙을 가진 군수열을 코드로 구현해보자.
1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ...
파이썬 실습 ① – 기본 군수열
n = int(input("n번째 항을 입력하세요: "))
k = 1
while n > k * (k + 1) / 2: # 누적 항 수가 n을 넘을 때까지 반복
k += 1
# n번째 항의 위치 (해당 군 내에서 몇 번째 항인지)
pos = int(n - (k - 1) * k / 2)
print(f"{n}번째 항의 값은 {pos}입니다.")
n = int(input("n번째 항을 입력하세요: "))
k = 1
while n > k * (k + 1) / 2:
k += 1
pos = int(n - (k - 1) * k / 2)
a = pos
b = k - pos + 1
print(f"{n}번째 항은 ({a}, {b})입니다.")
입력 예시
n = 40
출력
40번째 항은 (4, 6)입니다.
💡 (a, b) 구조를 통해 군과 내부 항의 관계를 동시에 표현할 수 있다.
🧩 수식 정리
구분
수식
설명
군의 마지막 항 번호
Sn=n2+n2S_n = \frac{n^2 + n}{2}Sn=2n2+n
n군의 마지막 항
군 내 항의 위치
pos=n−Sk−1pos = n - S_{k-1}pos=n−Sk−1
n번째 항이 k군에서 몇 번째인지
n번째 항의 값
a=posa = posa=pos
군 내부 위치값
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
💡 생각 정리
이번 강의에서는 수열을 “묶음 단위”로 관찰하는 새로운 시각을 배웠다. 단순히 하나의 규칙이 아닌, “군”이라는 계층 구조를 통해 수열의 패턴을 이해할 수 있었다.
특히 while문을 통해 군의 범위를 찾아내는 방식은 논리적 반복과 조건 처리의 개념을 수학적으로 체득할 수 있었다.
🚀 적용점
프로그래밍
수열을 구간 단위로 분석하는 알고리즘 설계 연습
while 반복문과 누적 합을 활용한 동적 규칙 탐색
수학적 사고
계차수열, 군수열, 계층적 패턴 간의 관계 이해
군수열 공식을 이용해 n번째 항 추론 훈련
시각화 확장
matplotlib을 이용해 군별 항의 위치를 그래프로 시각화
군 단위별 누적 곡선을 표현하여 패턴 확인
👉 이번 단원은 수열을 “계층 구조적 시각” 으로 이해하는 첫 단계였으며, 다음에는 수열의 규칙을 식별하는 알고리즘적 접근(패턴 탐색) 으로 확장할 수 있다.