2015년 7월 30일 목요일

SumPrime Algorithm(서로 다른 두수 사이의 소수들의 합)

서로다른 두 자연수 사이의 '소수'들의 합을 구하는 알고리즘이다. 위와 같이 두수 2와 11을 입력하면 그 두수들(2와 11)사이의 소수들(2,3,5,7,11)의 합 (28)이 출력되는 알고리즘이다.  1. 선행지식 1) 소수를 구한다.      소수들의 합을 구하려면 먼저 그 소수들을 찾아야한다.    그 소수들을 찾는다면 그 합을 구하는 것은 어렵지 않을것 이다. 2. 처리과정 1)두 수를 입력 받는다. 2)두 수 사이의 소수를 찾는다. 3)'2)'의 과정에서 찾은 소수들을 더한다. 그렇다면 먼저 어떤 수가 소수인지 어떻게 알것인가? 일단 소수(prime)란 어떤수를 자기자신 보다 낮은 수부터 차례대로 하나씩 나눴을때 나머지가 '0'  즉, 나눠지는 수가,  1과 자기 자신 밖에...

Coin Change Algorithm(거스름돈 알고리즘)

알고리즘 공부를 시작한게 된 건 컴퓨터적인 사고방식을 키우고자 함이다. 알고리즘을 컴퓨터로 구현하기 위해서는 선행지식과 처리과정을 알고있어야한다. 첫째로 거스름돈 알고리즘을 짜보았다. 거스름돈 알고리즘이란, 우리가 보통 돈을받고 거스름돈을 줄때 가장 큰 단위의 지폐부터 주고 그 다음 큰 단위 그다음 그다음 이런식으로 차례로 화폐를 교환 해주는것을 컴퓨터로 계산하게 만든 알고리즘을 말한다. 예를들어 9700원을 효율적으로 주려면, 5000원 짜리 1장, 1000원짜리 4장, 5원짜리 1개, 100원짜리 2개로 거슬러 주는것이다.  위와 같이 코인을 입력받으면 이렇게 가장효율적으로 거슬러주는 프로그램이다. 다음은 이 알고리즘을 컴퓨터로 구현하는 과정 1. 선행지식 이 알고리즘을 구현하기 위해 필요한 선행지식으로는 우리는 가장 큰 단위의 화폐부터 작은...

2015년 7월 29일 수요일

Linked List

List Class 를 C 를 이용해 만들어보았다. (연필로 하나 씩 짜보니 많은 코딩 실력에 향상에 도움을 주었다 . 이렇게 보니 뿌듯ㅎㅎ) 벡터는 자료를 삽입, 추가 , 제거 하는데 모두 시간복잡도가 n이지만, 리스트는 자료 삽입, 추가, 제거가 벡터와 달리 복잡도 1이라는 용이한점을 가진다. 이유는 리스트의 구조에 있다 . 밑의 그림을 보면 리스트를 이해하기 쉽다. 먼저 리스트의 구조는 위의 사진과 같다. 헤드라는 포인터가 가장첫번째 자료를 갖는 Node 형 구조체를 가르킨다. Node 형 구조체는 다음(next) 과 전(previous) Node 형 구조체와 연결 할 수있는 포인터를  가지고 있다.  다음 사진은 새로운 자료(data)를 갖는 구조체를 추가할때의 과정이다. 4라는 자료를 연결하기 위해서...

2015년 7월 23일 목요일

Vector(c 자료구조 벡터)

2015/07/23 수업 3일차 벡터란 .,, 한마디로 동적배열이다. 오늘 처음으로 c로 클래스를 구현해 보았다. 객체지향이라는 의미를 몸소 느낄수 있는 코딩시간이었다. c를 객체 지향적으로 만드는일은 매우 번거롭다. 구조체 안에 변수만 넣을 수 있다. 그래서, visual studio에서 구조체 접근 연산자인 '.' 을 찍으면 멤버 변수를 볼 수 있다. 만일 여기에, 함수를 넣을 수 있다면? c++언어의 클래스와 비슷한 기능을 사용할 수 있다. 하지만, c에서는 함수를 구조체에 넣을 수 없기 때문에, 함수 포인터를 사용하였다. ------------------------------------------------------------------------------------------------ 벡터의 동작원리 위와 같이,[1,2,3] 인 크기가 3개인 배열이있다....