본문 바로가기

전체 글167

[BOJ/C++]2110번_공유기 설치(★) https://www.acmicpc.net/problem/2110 ##문제 이해하기 ##코드 작성 전 알아야 할 개념 && 코드 논리 :1_ 첫번째 집을 공유기를 설치했다고, 가정 => 그 다음 순차탐색으로 집을 순회하면서, 다음 공유기를 설치할 집을 찾는 IDEAif (mid (자세한 설명은 밑의 노트)2_ (1_)과정의 집을 순회하면서, 공유기 설치 후 => 설치된 공유기 개수 vs 입력한 공유기를 설치해야할 개수(C) 비교=> 이분탐색3_★Upper_Bound 이분탐색 vs Basic 이분탐색 :어떤 값을 찾는 것이 아닌, 조건에 맞지만, 그 중 최대거리를 찾는 과정이기 때문에, Upper_Bound로 코드 구현해야한다.※참고 설명 :일반적인 이분 탐색 (Binary Search)일반적인 이분 탐색.. 2024. 7. 23.
SQLD_1일차_노트 2024. 7. 22.
[BOJ/C++]2805번_나무자르기 https://www.acmicpc.net/problem/2805##문제 풀기 전 알아야 할 개념 :1_ " 1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000" : 입력된 수의 범위를 보고 2가지를 떠올려야 한다.long long 의 자료형으로 변수 초기화 , (또는 unsigned int)저렇게 범위가 많다는 것 => log(N)의 시간 복잡도 알고리즘을 사용할 것이라는 습관을 들여야 한다.2_ 0 ~ 입력된 나무의 높이의 범위 사이에서 적절한 높이를 탐색(최적화 문제) 해야한다. => 이분탐색(or 이진 탐색)##문제 풀이의 논리 노트 :1_ 나무의 높이들 입력하면서, 최대 높이를 업데이트2_ 최대 높이부터 내리면서(순차 탐색 x , 이진 탐색 o), 문제 조건에 맞는지 검사하.. 2024. 7. 22.
(11)[Chapter6]이진 탐색(이론 + 코드) ## 이론 노트 :##핵심 내용 요약 :1_ 구현 코드에서 반띵 기준A[mid] > 탐색값 => 왼쪽으로 반띵 => end = mid -1 대입A[mid] 오른쪽으로 반띵 => start = mid +1 대입A[mid] == 탐색값 => 찾았다.=> return mid(인덱스)2_ 종료 시점까지 도달하는 경우Case1_▲ 우연히 끝까지 도달한 값 == 탐색 값 => mid 인덱스 반환Case2_  탐색값이 배열안에 없는 경우 => NULL이 반환3_ 이진 탐색 기능 : 최악의 경우 (2_상황) ※탐색횟수 = [log(2)(탐색 데이터의 수)]ex_ N = 10 , 최악의 경우의 탐색 횟수 [log(2)(10)] = [3.xxx] = 3번4_ 이진 탐색 함수 라이브러리 사용법(구조체 배열일 경우) :ⓐ... 2024. 7. 21.