## 이론 문제
# 1. reshape() 함수의 모든 차원 변수를 -1로 채우면 알아서 차원을 할당해준다.
x (=> 차원 변수 중 하나만 -1로 설정해야 numpy가 자동으로 새로운 차원에 맞는 크기를 계산해준다.)

# 2. 2차원 배열에서 insert() 함수의 axis를 지정해주지 않으면 1차원 배열로 변환 후 인덱스 값에 넣어준다.
o

# 3. append() 함수는 axis 값을 넣어주지 않으면 오류가 난다.
x (=> axis 없이도 병합 가능)

# 4. hstack() 함수는 배열의 열이 달라도 사용할 수 있다.
o

# 5. 3차원 배열 [[[1,2,3]]]에서 np.squeeze(arr)의 값을 출력하면 [[1,2,3]]이 나온다.
x (=> [1,2,3] 이 출력됨)
## 실습 문제

*** 
세종 학원 모의고사 응시 결과를 바탕으로
학생들의 수준별 학습을 위한 분반 프로그램을 작성하고자 합니다.
학생들의 성적을 입력 받고 분석 및 처리하세요.
(각 문제는 연결된 문제입니다.)
(각 문제 4점 총 20점)
*** 

1. 학생 12명의 성적을 입력 받아 numpy 배열로 정리하세요.

2. 분반고사 성적의 표준 편차 배열 연산을 이용하여 계산하세요.(표준편차 구하는 공식으로 차근차근).

3. 2번에서 사용한 방식과 다른 방법으로 표준편차를 계산하세요.

4. 분반고사 성적에 따라 높은 순부터 차례대로 재배열하세요.

5. 성적순으로 4명씩 A,B,C반으로 배치하세요.

# ---------------------------1번 파트---------------------------------------
import numpy as np

# 점수를 저장할 리스트 초기화
scores = []

# 사용자로부터 12명의 점수를 입력받기
for i in range(12):
    score = int(input(f"{i + 1}번째 학생의 점수를 입력하세요: "))
    scores.append(score) # 리스트에 한 루프당 1개씩 값 추가

# NumPy 배열로 변환
arr = np.array(scores)

# ---------------------------2번 파트---------------------------------------

print(arr)
# 평균 계산
mean = np.mean(arr)          

# 분산 계산 (sum)
variance = np.sum((arr-mean)**2)/len(arr)

# 표준편차 계산
std_deviation = np.sqrt(variance)                  

print("표준편차:", std_deviation)

# ---------------------------3번 파트---------------------------------------

print("표준편차:", arr.std())

# ---------------------------4번 파트---------------------------------------

rank = np.sort(arr)[::-1]                
print(rank)

# ---------------------------5번 파트---------------------------------------
# 3행 4열 행렬 만들기
Class = rank.reshpe(3,4)          
# 3행 4열의 행렬을 한 행씩 쪼개기
A,B,C = np.vsplit(Class, 3)    

print(f'class A: {A}\\nclass B: {B}\\nclass C: {C}')