본문 바로가기

2016/10

3장 - C언어 변수(variable) 3장 - C언어 변수(variable) 변수란? - 사전적으로 상황에 따라 변하는 값을 뜻합니다. - 프로그램에서는 특정 데이터를 저장하는 공간이라고 할 수 있습니다. 먼저 아래의 소스코드를 보도록 하겠습니다. #include int main( void) { int number; number = 10; printf("%d\n", 10); printf("%d\n", number); return 0; } 실행 결과는 화면에, 10이 두 번 출력됩니다. 저번 포스팅에서 학습했듯이 line.9 - 10은 출력문입니다. 두 출력문 모두 %d 첨자를 이용해서 정수형 데이터를 출력하고 있습니다. 그러나 아래는 정수형 값이 아닌 문자가 씌여져 있지요? 예리한 분들은 아시겠지만, 단일문자나 문자열을 출력할 땐 따옴표('.. 더보기
최소신장트리(Minimum Spanning Trees) 크루스칼(Kruskal) 알고리즘 최소신장트리(Minimum Spanning Trees) 크루스칼(Kruskal) 알고리즘 신장트리란? - 사이클을 형성하지 않고 그래프의 모든 정점이 간선으로 연결되어 있는 것 최소 신장 트리(MST : Minimum Spanning Trees)란? - 최소한의 비용(가중치)로 신장 트리를 형성하는 것 크루스칼(Kruskal) 알고리즘 - 최소 신장 트리를 형성하기 위한 알고리즘 - Disjoint-set을 사용한다. * 대표 원소(representitive)를 통해 각 set을 분별하는 방식. * 이에 대해서는 차 후에 자세하게 다루겠다. 1. 동작원리 (1) 모든 정점들(vertices)을 독립적인 원소(set)로 만든다. (2) 모든 선분들(edges)을 가중치를 기준으로 정렬한다. (3) 가중치가.. 더보기
벨먼-포드 알고리즘(Bellman-Ford algorithm) 벨먼-포드 알고리즘(Bellman-Ford algorithm) - 가중치 그래프에서 시작점에서 목표점까지의 최단 경로를 찾는 알고리즘이다. - 다익스트라 알고리즘과 흡사하지만, 다익스트라보다 조금 더 느리다. + 음수 가중치를 판단할 수 없는 다익스트라에 비해 조금 더 유연하다. 동작 원리 (1) 시작점을 제외한 모든 점의 거리를 무한으로 초기화한다. ( 시작점의 거리는 0 ) (2) 모든 점의 수 만큼 반복적으로 가중치가 있는 모든 선분을 검사한다. (3) 갱신 가능한 거리가 있으면 최단거리를 갱신한다. (4) 음수 싸이클이 있는지 검사하고, 검사 결과를 반환한다. [ Fig. 1 ] process of bellmanford. cite : introduction to algorithm 3/E 함수 설명.. 더보기
제곱근과 실수 제곱근과 실수 1. 제곱근의 뜻 음이 아닌 수 a에 대하여 제곱해서 a가 되는 수를 a의 제곱근이라 한다. (1) 양수의 제곱근은 양수, 음수의 2개이고 두 수의 절댓값은 서로 같다. (2) 0의 제곱근은 0 하나뿐이다. (3) 제곱하여 음수가 되는 수는 없으므로 음수의 제급곤은 없다. 2. 제곱근의 표현 (1) 제곱근은 근호를 사용하여 나타내고 '제곱근' 또는 '루트'라 읽는다. (2) 양수 a의 제곱근 중 양수인 것을 양의 제곱근, 음수인 것을 음의 제곱근이라 한다. 3. 제곱수와 그 성질 (1) 제곱수 : 1, 4, 9, 16, .. 과 같이 자연수의 제곱인 수 (2) 제곱수의 성질 : 제곱수를 소인수분해하면 소인수의 지수가 모두 짝수이다. (3) 근호 안에 제곱수가 있으면 근호를 없애고 자연수로 .. 더보기
유리수와 순환소수 유리수와 순환소수 1. 유리수와 소수 (1) 유리수 : 분수로 나타낼 수 있는 수 (2) 유리수의 종류 = (정수) + (정수가 아닌 유리수) (3) 소수의 분류 : 분수에서 분자를 분모로 나누어 소수로 표현했을 때 - 유한소수 : 소수점 아래 0이 아닌 숫자가 유한 개인 소수 - 무한소수 : 소수점 아래 0이 아닌 숫자가 무한히 많은 소수 PLUS. 모든 유리수는 (분자)/(분모)를 계산하면 정수, 유한소수, 무한소수 중에서 하나가 된다. 2. 유한소수의 성질 (1) 유한소수는 분모가 10의 거듭제곱인 분수로 나타낼 수 있다. (2) 유한소수를 기약분수로 나타내면 분모의 소인수는 2나 5뿐이다. 0.2 = 25/100 = 1/4 = 1/2^2 3. 유한소수로 나타낼 수 있는 분수 분수를 기약분수로 고치.. 더보기
2장 - C언어 출력문 2장 - C언어 출력문 출력문이란 말 그대로 원하는 결과값을 화면을 통해 출력하는 것을 의미합니다. c언어의 출력문으로 printf() 를 주로 사용하므로, 이번 장에서는 printf() 함수의 사용법에 대해서 학습합니다. printf("(1)", (2)); printf() 함수의 인자값으로는 크게 2가지로 분류할 수 있습니다. (1) 실질적으로 화면에 보이는 데이터( 문자, 숫자 등 ) (2) 화면에 출력하고자 하는 변수 ( 생략이 가능하다. ) printf("Hello world!"); 위의 문장을 보면, (2)가 생략되어있고, (1)에는 Hello world!라는 문구가 쓰여져있습니다. 다음 소스코드를 실행해보도록 합니다. #include int main( void) { printf("Hello w.. 더보기
정수와 유리수 정수와 유리수 1. 정수 (1) 부호를 가진 수 : 서로 반대되는 성질을 가진 두 수량을 나타낼 때 어떤 기준을 중심으로 한 쪽에는 +, 다른 쪽에는 -를 붙여 나타낸다. (2) 정수 : 양의 정수, 0, 음의 정수를 통틀어 정수라 한다. PLUS. 0은 양의 정수도 음의 정수도 아니다. (3) 수직선 : 직선 위에 기준점 O를 정하여 그 점에 수 0을 대응시키고 오른쪽에는 양의 정수, 왼쪽에는 음의 정수를 차례로 대응시킨 직선 PLUS. 분수 꼴로 나타내어진 수는 분수를 반드시 기약분수로 나타내어 정수인지 판단해야 한다. 2. 유리수 (1) 유리수 : 양의 유리수, 0, 음의 유리수를 통틀어 유리수라 한다. (2) 유리수의 분류 - 유리수 = (정수) + (정수가 아닌 유리수) PLUS. 모든 정수는 .. 더보기
소인수분해 소인수분해 1. 소수와 합성수 (1) 소수 : 1보다 큰 자연수 중에서 1과 자기 자신만을 약수로 가지는 수 - 소수 중 짝수는 2 뿐이고 나머지는 모두 홀수이다. (2) 합성수 : 1보다 큰 자연수 중에서 소수가 아닌 수 PLUS 1은 소수도 아니고, 합성수도 아니다. 2. 거듭제곱 (1) 거듭제곱 : 같은 수나 문자를 여러번 곱한 것을 간단히 나타낸 것 (2) 밑 : 여러번 곱한 수나 문자 (3) 지수 : 여러번 곱해진 수나 문자의 개수 aⁿ 에서 밑은 a, 지수는 n 3. 소인수 분해 (1) 인수 : 자연수 a, b, c에 대하여 a = b x c 일 때, b, c를 a의 인수라 한다. (2) 소인수 : 인수들 중에서 소수인 인수 (3) 소인수분해 : 자연수를 소수들만의 곱으로 나타내는 것 PLUS.. 더보기
1장 - C언어의 구조 1장 - C언어의 구조 #include int main( void) { // write your code here return 0; } C언어는 크게 전처리 부분과 함수 부분으로 나눌 수 있다. 1. 전처리 : 사용자가 작성한 코드를 컴파일하기엔 미리 수행하는 작업으로 위의 예제 line.1에 해당한다. 헤더 파일을 소스코드에 포함시키거나, 매크로 등을 예로 들 수 있다. 2. 함수 : 실질적으로 코드를 작성하는 부분으로, 위의 예제 line3 - 8에 해당한다. 함수에 대한 세부적인 내용은 뒤에서 학습하도록 한다. 더보기
C언어 BFS 미로 최단경로 구하기(escape the maze in C) BFS 미로 최단경로 - DFS 알고리즘을 이용하여 주어진 미로의 최단 경로를 구하라. 제한 사항 - N X N 미로의 크기 N은 5 ~ 10 - 각 수행 시간은 10msec를 넘지 않도록 한다. 입력과 출력 - 입력은 맨 처음은 테스트 횟수(TC), 그 다음부터 N X N 미로의 크기 N 을 입력받고 미로의 원소들을 각각 입력받는다.( 입력은 첨부된 input.txt 파일을 이용한다. ) input.txt 시작점(1), 목표점(2), 길(0), 벽(7) = 이동할 수 없는 지점 - 출력은 우측의 출력 예를 참고한다. 입력 예 출력 예 5 5 7 1 7 7 7 7 0 0 0 7 7 0 7 0 7 7 7 0 0 7 7 7 7 2 7 ....... #1, ? msec. answer = 6 #2, ? msec.. 더보기