### 실전문제 ###
# 1) 3차원 공간에서 임의의 점 3개를 생성한다. 생성된 좌표들로 삼각형을 만들 수 있는지 판별하시오.
# 1-1) numpy의 random을 사용하여 3차원 공간에서 [-100, 100] 사이의 임의의 정수를 추출해 3좌표 a, b, c를 만드시오. [1]
a = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])
print(a)
b = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])
print(b)
c = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])
print(c)

# 1-2) 위 추출된 3좌표로 삼각형을 만들 수 있는 지 확인하시오. [7]
ab = a-b
ac = a-c
for i in range(0,3):
    if ab[i] != 0 and ac[i] != 0:
        if ab[0]/ac[0] == ab[1]/ac[1] and ab[0]/ac[0] == ab[2]/ac[2]:
            a = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])
            b = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])
            c = np.array([np.random.randint(-100,101), np.random.randint(-100,101), np.random.randint(-100,101)])            
print("삼각형 세 점의 좌표 : ({},{},{})".format(a,b,c))

# 2) 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 된다.
     최대 10X10 크기인 두 개의 행렬을 랜덤으로 만들고, 그 두개의 행렬 덧셈의 결과를 반환하는 함수,
     solution을 완성하시오.
     
# 2-1) 최대 크기가 10X10인 두 행렬을 랜덤으로 생성하시오. [2]
mat1 = np.random.rand(100).reshape(10,10)
print(mat1)
mat2 = np.random.rand(100).reshape(10,10)
print(mat2)

# 2-2) 두 행렬의 덧셈을 하시오. [2]
mat1 + mat2

# 2-3) 행렬의 덧셈 값을 출력하시오. [2]
print(mat1 + mat2)

# 2-4) 행렬의 크기를 출력하시오. [2] -->
print(mat1.size)
print(mat2.size)

### 이론문제 ###
# 모든 문제는 O, X 문제입니다. 
# 1) numpy의 np.append()함수에서 axis를 설정하지 않았을 때, 
#    두 배열의 차원이 일치하지 않아도 1차원 배열을 반환한다. [2]
	=> O
# 2) np.sort() 함수를 사용하면 원본 배열이 직접 변경된다. [2]
	=> O
# 3) np.reshape 함수를 사용하여 배열의 총 원소 수가 변할 수 있다. [2] 
	=> X(reshape함수는 배열의 형태(shape)를 바꾸는 함수이지 원소의 개수(size)를 바꾸지는 않는다)
# 4) np.concatenate() 함수는 기본적으로 배열을 0축(행 방향)으로 병합한다. [2]
	=> O
# 5) numpy 배열을 수평으로 병합하기 위해 np.hstack() 함수를 사용할 수 없다. [2]
	=> X(수평으로 병합하기 위해 쓰는 함수는 hstack()이다)