이 포스트를 이해하기 위해서는, Hash 자료구조에 대한 이해가 선행되어야 합니다. 만약에 이에 대한 이해가 없다면, 이 포스팅을 보고 오시는 것을 강력하게 권해드립니다. 흔히 많은 책에서 equals를 오버라이딩 하면, hashCode를 같이 오버라이딩을 하라고 합니다. 왜 그런지 천천히 알아보도록 하겠습니다. Dog 클래스입니다. 오늘은 이 클래스만 보고 이야기를 해 보도록 하겠습니다. 먼저 hashSet에 item을 하나 넣었다고 가정해 봅시다. 그러면 HashSet의 add 메서드가 hashMap의 put 메서드를 호출합니다. put은 putVal 메서드를 호출하는데요. 이 때, 1번째 인자로 hash(key)를 넣습니다. 이 함수의 내부를 봅시다. hashSet에 add한 key 객체가 hash..
전체 글 검색 결과
이번 시간에는 Java의 생성자에 대해서 알아보겠습니다. 먼저 Main 클래스의 main 함수에는 다음과 같은 내용이 있습니다. "chogahui" 라는 이름을 가진 Dog 객체를 생성한 다음에, 생성한 Dog 객체가 barking합니다. 즉, 제 강아지가 barking 이라는 기능만을 수행한 것입니다. 이제 Dog 클래스를 봅시다. 먼저, String을 매개변수로 넘긴 Dog 생성자는 made a object라는 내용을 출력합니다. 그리고, 해당 객체의 name과 age를 초기화 합니다. 다음에, barking 메서드는 bark라는 내용만 출력합니다. 그러면, 위 프로그램의 출력 결과가 어떻게 나올까요? made a object가 먼저 출력이 되고, bark가 출력이 됩니다. 이를 통해서, 우리는 Do..
가중치가 0과 1만 있는 그래프에서 최단 거리는 어떻게 구할까요? 얼핏 들어서는 그냥 다익스트라를 잘 이용하면 될 거 같습니다. 그런데, deque나 Queue 구조만을 이용해서 코딩을 할 수 있습니다. 이게 어떻게 가능할까요? 먼저, 가중치는 0과 1만 있어요. 그리고 알고리즘 1은 위와 같습니다. 해석해 보면 그렇게 복잡하지 않아요. 시작 지점을 s라 합시다. 처음에는 s까지 최단 거리가 0이다. 라는 정보를 dq에 넣을 겁니다. 그리고, 자료 구조 dq의 앞 부분에서만 정보를 뺍니다. 이 정보는 to까지 min_dist가 cost다. 입니다. to와 인접한 지점을 a라 합시다. 이 때, to로부터 a까지 거리가 0이라면, a까지 거리에 대한 정보를 dq의 앞에 넣고, 아니라면 dq의 뒤에 넣습니다...
저번 시간에, 자연 조인에 대해서 이야기 했습니다. 아직 보고 오지 않으셨다면 보고 오시는 것을 권장드립니다. 이것은, 속성이 같은 것을 JOIN 조건으로 삼습니다. 그렇기 때문에, 의도치 않은 결과가 나올 수 있어요. 저번 시간에 했으니, 복습을 한 번 해 봅시다. 돛단배 DB 교과서에는 대학교 DB 예제가 있습니다. classroom의 정보를 모두 봅시다. 그러면, capacity랑, room_number랑 building이 있습니다. 즉, 이 교실은 x명을 수용할 수 있고, room 번호가 y이고, building이 z입니다. 당연하게도, 교실 번호는 중복될 수 있습니다. 일례로 우리 학교도 경상관 101호랑, 정보 과학관 101호가 있습니다. 101호가 중복되어 있을 수 있습니다. 그리고 이것은 ..
드디어 200번째 글입니다. void형 포인터에 대해서 배워봅시다. 보통 우리는 다음과 같이 썼을 거에요. 이것은 무엇을 의미할까요? 일단 p에 15를 넣습니다. p는 메모리에 어딘가에 할당이 되어 있을 겁니다. 그리고 이 p의 주솟값을 a가 들고 있습니다. 예를 들어 p의 주소가 0x80이라면 a는 0x80을 들고 있는 것입니다. 다음에 (*a)++이 있는데요. 이는 (*a) = (*a) + 1을 의미합니다. a를 역참조하면 p가 되므로, 결국 p에 1을 증가시키라는 것과 같습니다. 최종적으로는 p = 16이 될 거에요. a는 int형 자료형을 가르켰어요. void형 포인터는 이와 다르게, 주솟값을 저장하고 있기는 한데, 가리키는 자료형을 모르는 pointer를 의미합니다. 아래 예제를 봅시다. int..
최근댓글