# 행렬의 안장점의 존재 여부와 그 위치, 값을 구하는 문제 문제) $m*n$ 행렬에서 어떤 원소 $a[i][j]$가 $i$행에서 가장 작은 값이고 $j$열에서 가장 큰 값일 때, 이 행렬은 안장점(saddle point)을 갖는다고 말한다. 안장점이 존재한다고 할 때 이 안장점의 위치를 결정하는 C함수를 작성하라. 작성한 함수의 연산 시간은 얼마인가? # 풀이 문제에서는 행렬의 안장점(saddle point)이 존재한다고 가정했지만, 직접 프로그래밍을 할 때는 예외상황에 대한 처리 또한 해주는 것이 좋다. 안장점(saddle point)이 있다면 어디 위치의 무슨 값이고, 만약 없다면 존재하지 않는다고 출력할 수 있는 프로그램을 작성해보자. 안장점(saddle point)은 행에서 가장 작고, 열에서 ..
# 배열 뒤집기 문제 문제) 주어진 배열 $a[n]$을 가지고 $z[0] = a[n-1]$, $z[1] = a[n-2]$, $...$, $z[n-2] = a[1]$, $z[n-1] = a[0]$의 성질을 만족하는 배열 $z[n]$을 작성하라. 이 때, 최소의 기억장소를 사용하여 만들어라. # 풀이 비교적 간단한 문제에 속한다. 임의의 원소를 만들어 준 후에, 반복문을 이용하여 인덱스에 약간의 연산만 추가해 주어 값을 복사한다. /************************************************* ** 배열의 원소를 거꾸로 갖는 새로운 배열 제작 *************************************************/ #include #define MAX_SIZE 3..
공용체(union)를 학습하기 전에 먼저 구조체에 대한 부분이 학습이 되어 있어야 한다. 구조체 포스팅에서 다뤘던 human 구조체를 기본으로 공용체를 설명하려 한다. 먼저 공용체가 등장한 기본 아이디어부터 살펴보도록 하자. human이라는 구조체를 남자와 여자로 구분하려 한다. 남자라면, 수염이 있는지 없는지 여부를 물을 수 있을 것이고 여자라면, 아이가 몇 명 있는지 등의 질문을 할 수 있을 것이다. 구분하는 방법은 다양하다. 주민번호 앞자리가 1인지 2인지에 따라 구분할 수도 있을 것이다. 그러나 항상 비교연산 등을 통해야 여부를 알 수 있으므로 이렇게 비교하는 건 불편하다. 더 쉽게 구분할 수 있는 방법은 없을까? 위의 아이디어로부터 등장한 개념이 바로 공용체(union)다. 공용체의 선언은 구조..
배열(Array)은 같은 타입의 데이터를 한 데 묶어 관리하게 해주는 자료구조라면, 구조체(Struct)는 서로 다른 타입의 데이터를 한 데 묶어 관리할 수 있게 해주는 자료구조다. 구조체(struct)는 다른 프로그래밍 언어에서 레코드(record)라고 불리기도 한다. 구조체의 예를 한 번 살펴보자. struct { char name[10]; int age; float salary; } person; 구조체 문법을 통해 3개의 항목(fields)를 가지는 변수(variable) person을 만들었다. 구조체가 있기 전에는 변수라 하면, int형 혹은 float형 등 단일 변수를 의미했지만 이제는 다양한 자료를 한 데 묶어 하나의 변수로 취급할 수 있게 됐다. 위 구조체 변수 person이 가지는 3개..
# CHAPTER 5 - 구조체, 문자 표시와 GDT / IDT 초기화 #1 부팅 정보 받기 (harib02a) 4일차까지의 bootpack.c 에서는 0xa0000 이라든가 320이나 200이라는 숫자를 직접 프로그램에 쓰고 있었는데, 본래 이 값들은 asmhead.nas 에서 가져와야 한다. 그렇지 않으면, 화면 모드를 바꿨을 때 실행이 잘 안 된다. 그렇다면 포인터를 사용해서 이 값을 가져와 보도록 해보자. 추가로, binfo는 'bootinfo'의 약어고 scm은 'screen'(화면)의 약어다. /************************************************* ** HaribMain (in harib02a / bootpack.c) **********************..
- Total
- Today
- Yesterday