본문 바로가기
반응형

분류 전체보기123

Find Pivot Index 주어진 배열에서 Pivot Index를 찾아라. Pivot이란 배열 상에 있는 값들 중, 임의의 인덱스를 중심으로 왼쪽과 오른쪽의 합이 같은 지점의 인덱스이다. 예 : [ 1, 8 , 2, 9, 2, 3, 6 ] --> Pivot : 9 개념 배열을 순회하는 인덱스를 중심으로 좌, 우의 값들의 합을 계산한다. ( LeftSum, RightSum ) LeftSum과 RightSum이 동일하면 해당 인덱스가 Pivot 이다. (종료) LeftSum과 RightSum 이 다르면 순회를 계속 진행하되 이전 인덱스의 값을 저장한다. (PastPivotNum) #include int accumulation(int* nums, int numSize) { int resultSum = 0; for (int i = 0; .. 2021. 10. 19.
Move Zeros 주어진 배열에서 숫자 0은 모두 오른쪽 끝으로 옮겨라. 0이 아닌 숫자들의 순서는 바뀌면 안된다. [ 0, 5, 2, 1] -> [ 5, 2, 1, 0] [ 5, 7, 0 , 9, 13, 0, 45] -> [5, 7, 9, 13, 45, 0, 0] 0을 찾아서 오른쪽 끝으로 보내기? 첫번째 예에서 0을 1의 오른쪽으로 보낼때 다른 숫자들도 하나씩 왼쪽으로 밀어야 한다. 0을 찾을때 마다 오른쪽의 있는 숫자와 버블 스왑 반복 반대로 쉽게 생각해보면 0이 아닌 숫자를 만나면 왼쪽으로 보내면 되겠다! 구현 예 #include void moveZeros(int* nums, int numsSize) { int wIndex = 0; for (int index = 0; index < numsSize; index++).. 2021. 10. 18.
이진 탐색 (Binary search) 이진 탐색(Binary search)는 정렬된 데이터 집합을 이분화 하면서 탐색을 진행하는 방법이이다. 검색 범위를 반으로 줄여가며 탐색하기 때문에 순차적으로 탐색하는 것 보다 효율적이다. 이를 위해서는 데이터가 먼저 정렬 되어 있어야 한다. 1. 입력 데이터의 중앙에 있는 값을 선택 2. 찾고자 하는 값과 (1)의 중앙 값을 비교 3. 찾고자 하는 값보다 (1)이 작을 경우 -> 입력 데이터 중앙 값의 왼쪽에 대한 탐색 진행 4. 찾고자 하는 값보다 (1)이 클 경우 -> 입력 데이터 상 중앙 값의 오른쪽에 대한 탐색 진행 5. 찾고자 하는 값을 찾을 때 까지 1~4를 계속 수행 구현 예 #include int search(int* nums, int numSize, int target) { int le.. 2021. 10. 18.
함수 오브젝트와 람다 표현식 Lambda Expression, 람다 표현식이란... 스코프 안에 있는 캡쳐 가능한 이름이 없는 Function Object를 만들어 주는 테크닉 다음과 같이 Muliplication 클래스가 있다. 멤버로서 localVar가 있고, 이는 생성자의 인자로서 초기화된다. localVar는 재정의된 연산자 ()에서 전달되는 인자 int x 와의 곱이 반환 된다. class Muliplication { public: explicit Muliplication(int a) : localVar{ a } {} int operator() (int x) const { return localVar * x; } private: int localVar; }; 이 클래스, 즉 함수 오브젝트는 이렇게 사용될 수 있다. int .. 2021. 9. 17.
반응형