IT/Computer Science 128

[선형대수] 파이썬으로 여러 행렬과 단위행렬 출력하기

영행렬과, 성분값이 정해진 행렬들 값들 생성하는 예제이다. 필요 library(numpy)를 import 하고, 각 단위 행렬을 생성했다.이 때 모든 성분이 1인 행렬은 np.ones를 이용하여 생성하고, 모든 성분이 3인 행렬은 np.full을 이용하여 생성한다. 생성 후 행렬을 출력하면 결과는 다음과 같다. 실행 결과 요구한 행렬이 모두 출력되었음을 확인할 수 있었다.

IT/Computer Science 2023.12.05

[선형대수] 대각행렬을 생성 후, 분리하여 블록행렬 처리하기

대각행렬을 생성후, 분리하여 블록행렬 4개로 만드는 예제이다. 대각행렬은 np.diag([대각성분1,대각성분2, 대각성분3]) 의 꼴로 생성한다. 그리고 대각행렬의 일부를 dag[] 형태로 나누어 쪼갠 후, 다시 행,열로 합쳐저 D행렬을 생성한다. 대각행렬을 생성후, 일부 분리하여 다시 합치는 작업을 진행해보았다. 출력 결과 3x3 matrix에서 주 대각성분이 3,4,5인 대각행렬이 만들어지는 것을 확인할 수 있었다.

IT/Computer Science 2023.12.04

[선형대수] 난수 행렬을 생성한 후, 역행렬을 구하기

난수행렬을 생성한 후 그 행렬의 역행렬을 구하고, 행렬과 구한 역행렬의 곱이 단위벡터인지 확인하는 예제이다. 1) 우선 난수 행렬을 생성한다. 난수 행렬의 생성은 np.random.rand(행,렬)로 이루어진다. 2) 역행렬을 구하기 위해 사용하는 방법에는 np.linalg.inv(numpy 내장함수를 이용하는 방법) 혹은 행렬의 곱 연산을 이용하는 방법이 있다. 두 가지 방법을 통해 역행렬을 구해본다. 3) 난수행렬과 그 역행렬의 곱이 단위행렬인지 확인하기 위하여, 판별문을 만든다. 실행 결과 난수행렬과 그 역행렬들을 출력할 수 있었다. 두 가지 방법으로 구한 행렬의 곱이 모두 단위행렬임을 확인할 수 있다.

IT/Computer Science 2023.12.03

[선형대수] 파이썬으로 행렬 벡터 기본연산 구현하기 (행렬 덧셈, 행렬 뺄셈, 행렬 곱셈)

행렬에서의 기본 연산에 관한 예제이다. 파이썬으로 행렬의 덧셈, 행렬의 뺄셈, 행렬의 곱셈을 구현해보려고 한다. 행렬의 정의를 함수를 통해 구현해보았다. n * m 행렬을 구현하기 위해 이중 for문을 이용하여 공백란과 가로, 세로열을 규정하였다. 그리고 lone을 출력한 후 각 행렬에 값들을 삽입하였다. 행렬이 모두 삽입된 상태에서 행렬의 출력은 각 행렬을 정의해줌으로서 이루어질 수 있다. 같은 행렬의 덧셈과 곱셈은 상수 덧셈과 곱셈과 같은 방식으로 이루어질 수 있지만, 다른 행렬이 곱해질 경우에는 np.dot(행렬1, 행렬2)의 방식으로 행렬의 곱을 계산하게 된다. 한 행렬의 제곱 행렬은, np.linalg.matrix_power(행렬, 원하는 차수) 를 이용하여 이루어진다. 위의 행렬식을 실행해본 ..

IT/Computer Science 2023.12.02

[c] 문자열을 입력 받고, 문자열 내부의 특정 문자열을 교체하기

문자열을 입력 받고, 문자열 내부의 특정 문자열을 교체하는 예제이다. 표준 입출력 함수, 문자열 처리함수, 일반 유틸리티 함수를 사용하기 위해 필요한 헤더 파일을 import하였다. [replaceSubstring 함수] 임시 문자열을 temp에 저장, 문자열 길이는 len에 저장, 원본 문자열은 str, 그리고 복사한 문자열은 result에 복사되도록 세팅하였다.그리고 while문을 통해 result 문자열에서 from 문자열을 찾을 때까지 반복했다. [main함수] char 배열과 배열 크기를 설정했다. 그리고 fgets를 사용하여 문자열을 받아 str에 저장하였다. print문은 입력 문자열, 교체되기를 원하는 문자열, 교체 문자열로 나누어 입력받았고, 결과 문자열을 출력하도록 설정했다.

IT/Computer Science 2023.12.01

[c] strcat함수 구현(문자열 이어붙여 출력하기)

c에서 문자열을 결합하여 출력하는 프로그램이다. 가장 먼저 문자열 관련 함수를 출력하기 위해 #include 를 import 한다. line 4~23에서는 my_strcat 함수를 정의하였다. 두개의 문자열 포인터를 매개변수로 받아 'src' 문자열을 dest 문자열 끝에 복사한 후, while 루프를 돌렸다. main 함수에서는 char와 src 배열을 설정하였다. (배열 크기는 충분히 크게 설정하였다) while 문에서는 quit를 입력하는 탈출조건이 아닐 경우에 입력을 계속 받도록 설정하였다. fgets(dest, sizeof(dest), stdin)에서는 표준 입력에서 문자열을 읽어 dest에 저장했다. 입력은 사용자로부터 source string과 destination string을 받았다. 그..

IT/Computer Science 2023.11.30

[정보보안] 블록암호 운영모드(ECB, CBC, CFB, OFB, CTR)

블록암호 운영모드인 ECB,CBC, CFB,OFB,CTR에 대한 정리이다. ECB와 CBC는 블록암호, CFB, OFB, CTR은 스트림 암호 유형으로 분류된다. 블록암호 유형인 ECB와 CBC는 초기 벡터인 IV가 필요한 반면, 스트림 암호인 CFB, OFB, CTR은 초기벡터가 필요하지 않다. 오류전파 측면에서 보면, CBC와 CFB는 오류 전파가 일어나지만, 나머지 모드에서는 오류 전파가 일어나지 않음을 볼 수 있다.

IT/Computer Science 2023.11.25

[sql] Rollup, Cube, Grouping sets(집계함수)

집계함수인 ROLLUP, CUBE, GROUPING SETS이다. ROLLUP은 계층적인 요약을 생성한다. CUBE는 모든 가능한 조합에 대한 요약을 생성한다. GROUPING SETS는 사용자가 정의한 여러 그룹핑 세트를 지정하여 집계한다. 공통점은 ROLLUP, CUBE, GROUPING SETS 모두 집계함수의 공통점을 가지며, group by 절에서 사용된다는 점이다. 차이점으로는, cube는 모든 가능한 조합을 출력하는 데에 반해, rollup 은 단순히 계층적인 요약 기능만 제공한다. grouping sets는 사용자의 정의가 되어야 집계되는 형태이다.

IT/Computer Science 2023.11.23

[c] Call by value vs Call by reference

함수에서는 call by value 혹은 call by reference를 이용하여 값을 입출력한다. call by value는 함수 호출 시 넘기는 인자의 값이 매개변수에 복사되어 전달되기 때문에, 함수 내에서 값을 변경한다고 할 지라도 원본값은 변경되지 않는다. 원본 데이터를 터치하지 않기 때문에, 원본 데이터를 지키는 데에 있어서 안전하다. 그러나 값을 복사하여 사용하는 형태이기 때문에 메모리 사용량이 증가한다는 단점을 지닌다. call by reference는 함수 호출 시 인수로 전달되는 변수의 참조값(주소)을 함수 내부로 전달하는 방식으로, 인자로 전달되는 값이 변수의 주소이다. 따라서 변수 값을 변경하게 된다면 주소에 저장된 값도 변경된다. 이는 직접 참조에 유리하다는 장점을 가지지만, 원래..

IT/Computer Science 2023.11.15
반응형