목록Program Language (9)
할머니의 콤퓨타 도전기
map 컨테이너의 반복자가 참조하고 있는 원소가 삭제되는 경우 위험 m.erase(it) 이후 m의 반복자인 it가 무효화됨. erase에 의해 반복자가 이미 지워진 요소를 가르킴. 따라서 ++연산자는 정의되지 않은 결과 불러옴 map m; ... for(auto it = m.begin(); it!=m.end(); it++){ if(it->second == value) m.erase(it); // runtime error } 따라서 아래와 같이 erase 호출 전 미리 반복자를 복사하고 erase 호출 map m; ... for(auto it = m.begin(); it!=m.end();){ if(it->second == value) m.erase(it++); else ++it; }
unique() vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수 algorithm 헤더에 존재 중복되지 않는 원소들을 앞에서 채워나가는 역할. 따라서 남은 뒷부분은 그대로 vector 원소값이 존재 따라서 뒷 부분에 필요없는 값 삭제시켜줘야함 n개 원소에 대한 unique 함수의 시간 복잡도는 O(n) erase() vector 배열에서 특정 원소 삭제하는 함수 v.erase(v.begin()+s, v.begin()+e) : [s,e)의 원소 삭제. 시작 지점은 닫힌 구간, 끝나는 지점은 열린 구간으로 삭제 시간 복잡도 O(n) v.erase(unique(v.begin(), v.end()), v.end()); 위와 같이 중복된 원소들 제거하고 원하는 원소만 출력 가능
tolower: 대문자를 소문자로 변환 toupper: 소문자를 대문자로 변환 #include #include using namespace std; int main() { string str = "Hello World"; for(int i=0; i
사용자 정의 비교 연산자 구현 우선순위 큐 선언 #include using namespace std; int main(){ priority_queue pq; // 자료형 int, 컨테이너 vector, 사용자 정의 비교연산자 compare 비교 연산자 구현 정수를 오름차순으로 정렬하는 비교 연산자 struct compare{ bool operator()(int a, int b){ return a>b; } }; 우선순위 큐 내부에 새로운 자료가 들어가면 자신의 부모 노드와 크기를 비교하면서 조건에 따라 swap 위 코드에서 a는 부모 노드, b는 현재 노드 만약 a가 b보다 크다면 true를 return에서 swap을 진행함 이를 반복하면 조상 노드는 가장 작은 원소가 차지하게 됨 정수를 내림차순으로 정렬..
std::map은 key와 value를 갖는 데이터 구조 std::map은 key 값에 따라서 정렬되지만, std::unordered_map은 hash_map과 동일하게 내부적으로 key 값에 의해 정렬되지 않는다. std::unordered_map의 장점은 빠른 탐색속도 n개의 데이터 쌍을 갖는 std::map의 경우 O(logN)의 탐색 속도를 갖는 반면, std::unordered_map은 O(1)의 탐색 속도 map map은 기본적으로 red-black tree 기반 따라서 모든 데이터는 key 값을 기준으로 정렬 map의 경우 입력되는 key 값의 분포가 고르지 못할 경우 balancing에 대한 비용이 계속 들어가기 때문에 성능 저하 탐색 속도 O(logN)은 보장 unordered_map h..
CSV(Comman Separated Values) 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일입니다. 호환되지 않는 포맷을 사용하는 프로그램 끼리 자료를 전달할 때 사용합니다. Split 하여 처리하기 편하다는 장점이 있습니다. List to CSV file import pandas as pd data = pd.DataFrame(db) data.columns = ['키워드','제목', '내용', 'uid', '채널명','채널id','조회수','좋아요','싫어요','댓글 수','태그','구독자 수','영상 등록일','영상 길이','정보수집일'] s = db[0][0].replace('"',"") # 한글깨짐 현상 발생 : encoding utf-8-sig 로 전환 data.to_cs..