본문 바로가기

백준

(2)
C++ 삽입 정렬 - 정렬3 삽입 정렬은 O(n²) 정렬 알고리즘 중 가장 효율적인 알고리즘이다 삽입 정렬은 한 원소를 선택하여 그 원소를 알맞은 위치에 삽입하는 알고리즘이다 아이디어는 1. 한 원소를 선택하여 2. 선택한 원소보다 작은 원소를 만날때까지 앞의 원소와 비교한다 3. 앞의 원소가 선택한 원소보다 작다면 선택한 원소와 자리를 바꾼다 4. 선택한 원소보다 작은 원소를 만나면 멈춘다 언뜻 보면 버블 정렬과 유사해 보이지만 다른 점은 정렬을 멈추는 지점을 알기 때문에 선택 정렬이나 버블 정렬과 다르게 불필요한 정렬을 하지 않는다 선택 정렬에서는 왼쪽의 원소들은 이미 정렬이 되어있다는 가정을 하기 때문에 왼쪽으로 탐색했을 때 자기 자신보다 작은 원소가 있다면 거기서 멈추면 된다 int* InsersionSort(int* arr..
C++ 문자열 동적 할당 c++의 string과 getline함수의 느린 동작을 보완하기 위해서 나만의 문자열 동적 할당 함수를 작성하게 되었다 V.1 char* getstring(){ char temp[STRING_SIZE]; fgets(temp, STRING_SIZE, stdin); char* s = new char[strlen(temp)]; strcpy(s, temp); return s; } 1. 임시 배열 temp를 먼저 선언하고 2. fgets를 통해 사용자 입력을 받아 3. 입력의 크기만큼 새롭게 할당한 메모리에 4. 문자열을 붙여넣는다 이 인풋은 정상적으로 실행이 되었지만 한가지 문제가 있었다 바로 개행문자까지 저장이 된다는 것이다 $ asdfasdlkj//인풋 -> asdfasdlkj\n//결과물 그래서 마지막 개..