https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr H-Index라고 하는 것에 대한 정의가 실제로 존재했다! 위키백과에 말과 프로그래머스를 인용하자면 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, ..
사실 상 size가 정해지면 list를 만들 필요 없이 배열로 해도 된다. 하지만 이 문제에 대해서는 배열을 활용하기 위한 것이 아닌, list를 활용하여 문제를 풀어보기 위함이었다. ArrayList를 활용할 것인가, LinkedList를 활용할 것인가에 대해 많은 고민과 테스트가 있었다. 우리가 흔히 알고 있는 각각의 장단점은 ArrayList에서 만큼은 값을 검색하는 능력이 빠르고, 값의 추가 삭제가 느린 대신에, LinkedList는 값을 검색하는 것이 느리며 값의 추가 삭제가 빠르다는 것이다. 그런데 문제를 풀어보면 풀어볼수록 이상한 결과가 나왔다. 요세푸스문제의 경우 값이 중간중간에 계속 빠지는 부분이 있다보기에 LinkedList를 활용하여 값을 관리하려고 했다. 하지만 ArrayList가 ..
▶ 해시테이블 효율적인 탐색을 위한 자료구조, 키를 값에 대응시킨다. 간단한 해시테이블을 구현하기 위해서는 연결리스트와 해시 코드 함수만 있으면 된다. 키와 값을 해시테이블에 넣을 때는 다음의 과정을 거친다. 1. 키의 해시코드를 계산한다. 키의 자료형은 보통 int 혹은 long이 된다. 키의 개수는 무한한데 반해 int의 개수는 유한하기 때문에 서로 다른 두 개의 키가 같은 해시 코드를 가리킬 수 있다는 사실을 명심하자. -> database의 키 값을 가져올 때 long을 많이 사용했었다. 2. hash(key) % array_length와 같은 방식으로 해시 코드를 이용해 배열의 인덱스를 구한다. 물론 서로 다른 두 개의 해시코드가 같은 인덱스를 가리킬 수도 있다. 3. 배열의 각 인덱스에는 키와..