이진 탐색 2

[Java] 프로그래머스 : 순위 검색

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이 과정 처음엔 시간 계산안하고 풀어서 효율성에서 딱걸렸다. (info의 크기) x (query의 크기)는 50억으로 2중 반복문 도는 순간 무조건 효율성에서 걸린다. 따라서 메모리를 좀 더 쓰더라도 (info의 크기) + (query의 크기)가 되도록 해야한다. 구체적인 프로세스는 아래와 같다. 1) info를 돌면서, 모든 가능한 경우를 Key값으로, 점수를 Value로 한다..

탐색(Searching)

1. 탐색이란? 탐색은 '데이터를 찾는 방법'을 말한다. 여기서는 '어떻게 찾을까'와 '효율적인 탐색을 위해 어떤 방식으로 데이터를 저장할까'를 고민해야 한다. 정렬과 탐색은 정수를 기준으로 한다. 탐색할 데이터의 종류가 무엇이든 탐색 자체의 알고리즘에 대해서만 집중하기 위함이다. 따라서 데이터는 아래와 같이 구성한다. typedef struct item{ int searchKey; Data searchData;//Data : 원하는 데이터 type 적으면 됨 }Item; 2. 순차 탐색 - 단순하게 배열 처음부터 내가 찾는 값이 있는지 살펴본다. - 정렬되지 않은 배열을 대상으로 함 - O(n) 3. 이진 탐색 - 배열의 중앙에 위치한 데이터와 비교해서 그 데이터보다 작으면 왼쪽 구역에서의 중앙값과 또..

CS/자료구조 2021.07.15