본문 바로가기

전체 글162

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.
[BOJ/C++]11656번_접미사 배열 https://www.acmicpc.net/problem/11656##문제 풀기 전 알아야 할 개념 :Iterator을 이용하여, String 객체의 원소를 조작하기 : erase()메소드erase()메소드 :ⓐ. String클래스의 인스턴스 메소드 => 호출법 : String 객체.erase()ⓑ. 매개변수 : iterator의 String 객체의 포인터 : (or 객체 포인터 2개를 넣으면, 범위만큼 조작 가능)ex_ String 객체인 word의  인덱스 4번째 원소를 지우기 => word.erase(word.begin() + 4);ⓒ. 반환값 : voidC++ 에서 sort()메소드 vs qsort()메소드 차이 :1_ Sort() ⓐ. 헤더파일 : ⓑ. 호환성과 성능 : C++ 컨테이너와 많이 .. 2024. 7. 21.