본문 바로가기

전체 글

(352)
루프 불변성 ( loop invariant ) 루프 불변성의 개념이 계속 헷갈린다... for 문에 들어가는 3개의 식과 비슷한 의미 인거 같긴 한데... 이걸 계속 알아보다가 다음의 3개의 글을 찾았다. 루프 불변성에 대해서 알아보고 있다면 다음 글들이 도움이 될것 같다. http://blog.naver.com/soonchan86/130023452408 http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10104&eid=SNrxjFB+YKL9IbR5XPWfyWcgQZksjxXC&qb=bG9vcCBpbnZhcmlhbnQ=&pid=fnNHoloi5UlssvNPEO0sss--364302&sid=SPc5opUv90gAADcell4 http://en.wikipedia.org/wiki/Loop_invariant 루..
[LinkedList] Insertion Sort (삽입정렬) 배열을 이용한 삽입정렬은 쉽게 구현할 수가 있다. Index를 이용해서 값들을 옮기기 쉽기 때문이다. 그런데... 단일 링크드 리스트에서 삽입정렬은... 처음에는 상당히 난감했다... key값을 3개를 가지고 비교값도 3개를 가지고 했었다.... key앞,key,key뒤 이렇게 3개를 가지는것이다.... 하지만... 실패 ^^; 실패의 원인은 key에 대해 잘못 이해하고 있었음; 두번째 시도에서는 그림을 그려서 해보았음. 오랜 시간의 삽질이 있었지만.. 결국 성공했다... 하지만.. 이게 최적일까 -_-; 아무튼 생각하기 위해 그린 그림을 완성후 다시 정리하여 그려 보았습니다.
UpCasting & DownCasting 조금 헷갈리던 UpCasting 과 DownCasting 이 이제야 이해가 되고 있네요; 위와 같이 Class가 있다고 하면.. Animal ani_1 = new Dog(); Animal ani_2 = new Cat(); Animal ani_3 = new Bird(); ani_1.move(); ani_1.run(); // 오류 발생 ani_2.sleep(); // Cat 의 sleep() 실행 ani_2.run(); // 오류 발생 ani_3.move(); // Bird의 move() 실행 ani_3.sleep(); ani_3.fly(); // 오류 발생 UpCasting을 하게되면 Animal class의 Memory 크기에 Dog, Cat, Bird의 Memory를 넣게 된다 그래서 UpCasting..
점근적 표기 f(),g() 는 함수이며, c는 상수이다. θ(세타) : g(n)을 f(n)의 점근적으로 정확한 한계(asymptotically tight bound) θ(g(n)) = {f(n) : 모든 n>=n0에 대해 0
[LinkedList] reverse LinkedList에 저장되어있는 값들을 역순으로 정렬하는 것이다. 처음에 생각한 것으로는 처음부터 끝까지 한번 돌면서 Stack에 하나씩 주소를 push 해주는 것이다. 그리고 하나씩 pop하면서 다시 LinkedList를 연결한다. 그러면 마지막 주소부터 하나씩 새로 Link해주는 것이다. 위와 같은 순서로 진행된다. 하지만.... 교수님의 얘기는 처음부터 끝까지 한번 움직이면 역순으로 정렬이 되어야 한다고 한다.....; 포인터 3개로 하면 가능하다고 한다. 다음이 내가 고민끝에 생각해낸 결과이다. 분명 빨간색 펜이었는데.... 검정색으로 스캔이 되어버렸다는;;;
배열 참조와 2차원 배열의 선언 배열 참조 C에서 배열의 이름이 그 배열의 포인터를 가르키는 것과 같이 Java에는 배열의 이름이 참조값을 가진다. 그러므로 다음과 같이 사용하면 두개의 변수로 하나의 배열을 다룰수 있다. int[] num = {1,2,3,4,5}; int[] num_1 = num; int[] num_2 = num_1; 위의 세 변수 num, num_1, num_2는 모두 같은 참조값을 가지고 있기 때문에 하나의 배열이라고 볼수 있다. 만약 하나의 변수이름으로 값을 수정하게 되면 3개의 값이 다 바뀌는것 같을 것이다. num_2[0] = 9; for(i=0;i
배열 선언, 복사 자바에서의 배열 선언은 C와는 조금 다르다. C에서는 int num[10]; int num2[]={1,2,3}; 이런식으로 하였다면 자바는 int[] num = new int[10]; int[] num2 = new int[]{1,2,3}; int[] num3 = {1,2,3}; 이렇게 3가지 방법이 있다. 2,3 번째는 초기화를 같이 해주는 것이다. 자바와 C의 배열의 다른점은 자바에서는 배열을 만들고 메모리를 할당해 줘야 한다는건데 int, float등 기본 데이터형은 자동으로 메모리가 할당되지만 객체인 경우는 그렇지 않다. 그래서 직접 할당을 해줘야 한다. 안그러면 NULL값이 있게 된다. Person[] yoon = new Peson[10]; 이렇게 한다고 배열에 메모리가 할당되지 않는다. 값을 출..
다항식 곱셈 학번 두개를 가지고 다항식을 하나만든다. 이렇게 만든 두개의 다항식으로 곱셈을 한다. 과제가 다항식의 곱셈이었지만 어느새 다른부분이 더욱 집중이 되어버린;; 그 다른부분중 하나가 addTerm(zeroP(),3,2) 이런 부분이다. zeroP() : 빈 다항식 배열을 만들어서 주소를 리턴 addTerm() : 다항식 배열에 계수와 차수를 저장한다. 다항식을 만들때 이렇게 함수를 사용하여 만들었음 출력은 다항식이 만들어지는 과정과 곱한 결과가 나오게 하였음. 학번 두개로 다항식을 만든 규칙은 첫번째 학번을 정렬을 하여 20075278 을 87752200 으로 만든다. 그리고 두번째 학번에서 0을 제외한 숫자들을 계수로 한다. 20075277을 275277을 계수로 한다. 그래서 다항식 2X^8 + 7X^7..