군수열 본문
* 여러 개의 항을 묶었을 때 ( 군 ), 규칙성을 가지는 수열
* 정리는 노트에 기록함
* 공식은 없으며, 특정번째의 항을 찾을때, 각 군의 개수를 통해서 위치와 값을 구할 수 있다
* jupyter notebook ( python 3 )
* 조건문 활용 방법
조건문의 시작은 i != n 이니 , 당연히 else 문이 먼저 돌아가고( 식별을 위해 증가로 표시 해놓음 ),
range ( 1 ~ n+1 ) , 즉 i가 1 부터 n까지 돌아가고 있는 루프문 하에서
nCnt는 계속 1씩 증가,
else > else .. > if , n+=1이 되어
for 문의 range는 1, n+1이 된다.
i값 역시 n까지의 값에 따라서 종료되는 수가 1 씩 증가,
i=1 / n=1 / nCnt=1
i=1, 2 / n=2 nCnt=3
i=1, 2, 3 / n=3 nCnt=6
i=1, 2, 3, 4 / n=4 nCnt=10
.
.
nCnt 가 inputN보다 컸을 때의 값은, 각 루프의 i번째이며 해당 결과를 SearchN 객체에 할당
이후 결과를 충족 했으니 while flag:False 로 escape , 이후 for 문 break
무한 루프 방지를 위해 n +=1 로 종료
<< 복붙용 코드 >>
* 예제 1
inputN = int(input("n항을 입력:"))
flag = True # 무한반복 시행
n = 1; nCnt = 1; searchN = 0
# n = 1 , 1군에서 시작
# nCnt <- 내가 찾고자 하는 전체 항의 수를 계속 카운트
# searchN <-
# 한 군 안에서 반복하는 for 문
while flag:
for i in range(1,(n+1)): # range(1 ~ n+1까지는) n까지 포함해서 세고 종료 , 각 군에 포함된 항 만큼 반복문 시행
if i==n:
print('끝{}'.format(i), end=' ') # end=' ' 문자열 개행 \N을 막아주는 처리
else:
print('증가{}'.format(i), end=' ')
nCnt += 1
if (nCnt > inputN): # 내가 원하는 항의 수까지 셌다면 종료해야 한다
searchN = i
flag = False # while 문 종료
break # for문에 대한 break
print()
n += 1
print('{}항:{}'.format(inputN, searchN))
* 예제 2
inputN = int(input("n항을 입력:"))
flag = True # 무한반복 시행
n = 1; nCnt = 1; searchNC = 0; searchNP = 0
while flag:
for i in range(1,(n+1)): # range(1 ~ n+1까지는) n까지 포함해서 세고 종료 , 각 군에 포함된 항 만큼 반복문 시행
if i==n:
print('끝{}/{}'.format(i,(n - i + 1)), end=' ') # end=' ' 문자열 개행 \N을 막아주는 처리
else:
print('증가{}/{}'.format(i,(n - i + 1)), end=' ')
nCnt += 1
if (nCnt > inputN): # 내가 원하는 항의 수까지 셌다면 종료해야 한다
searchNC = i
searchNP = n - i + 1
flag = False # while 문 종료
break # for문에 대한 break
print()
n += 1
print('{}항:{}/{}'.format(inputN, searchNC, searchNP))