실습과제 1.1
◆ n x n 행렬이 주어졌을 때 이 행렬의 전치 행렬을 구하는 알고리즘을 의사코드로 기술한다.
■ 입력:
● 정수 값들로 구성된 2차원 n x n 행렬이 배열 A에 저장되어 있다고 가정한다.
● A[i,j] 는 2차원 행렬에서 i번째 행과 j번째 열의 값이 저장된 배열의 원소를 의미한다.
■ 출력:
● 입력으로 주어진 2차원 행렬 A의 전치행렬을 계산하여 2차원 행렬 B에 저장한다.
● 전치 행렬은 행과 열의 값이 뒤 바뀐 행렬을 의미한다.
■ 조건:
● 해당 알고리즘을 의사 코드로 작성
● 해당 알고리즘의 시간 복잡도를 계산하여 빅오 표기법으로 표현

■ 실행결과:
● 의사 코드이므로 따로 실행결과는 없다.
■ 과제에 대한 고찰:
- 여태껏 코드를 작성하기 전에는 항상 머릿속으로만 이러이러한 식으로 코드를 짜면 되겠구나 생각하고 바로 구현했었다.
비록 실행은 안되지만 사람이 읽고 이해하기 쉬운 의사코드로 작성하니 세세한 부분까지 신경 쓸 수 있었고
전체적인 틀을 잡는데 도움이 되어 좋았다.
실습과제 1.2
◆ 실습1에서 작성한 의사코드를 프로그래밍언어 (C/C++)로 구현한다.
■ 입력:

■ 출력:
● 입력으로 주어진 2차원 행렬 A의 전치행렬을 계산하여 2차원 행렬 B에 저장한다.
● 전치행렬 B를 화면에 출력한다.
■ 조건:
● A, B 행렬은 메인 함수 내에 선언
● void Transpose_Mat(int A[][MAT_SIZE], int B[][MAT_SIZE]);
▶ A행렬의 전치행렬을 계산하여 B에 저장
▶ MAT_SIZE는 행렬의 가로 크기 define 문을 활용
● void Print_MAT(int arr[][MAT_SIZE]);
▶ arr행렬을 출력
▶ 해당 함수를 활용하여, A와 B행렬을 출력
■ 코드:

■ 실행결과:

■ 과제에 대한 고찰:
- 하나의 행렬에 대한 전치행렬을 코드로 작성하는 문제였다.
전치행렬이란 행과 열을 교환하여 얻는 행렬을 말하며 따라서 반복문을 통해 각 배열의 열 값을
다른 배열의 행 값에 대입시켜 주면 되는 문제였다.
문제풀이 방식을 떠올리는 것은 크게 어렵지 않았으나 이전까지 파이썬만 사용하다가
처음으로 C언어를 통해 구현하려니 문법에 익숙하지 않아 어려움이 있었다.
이 부분은 계속 C언어로 구현하다 보면 익숙해질 것이라 생각한다.
'Data Structure' 카테고리의 다른 글
| Linked List(3.2) (0) | 2023.04.10 |
|---|---|
| Linked List (3.1) (0) | 2023.04.10 |
| Array(4) (0) | 2023.03.26 |
| Array(3) (0) | 2023.03.19 |
| Array(2) (0) | 2023.03.18 |