본문 바로가기
반응형

전체 글162

BOJ 2805 - 나무 자르기 / C++ 문제 링크 : https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 풀이 나무들의 높이가 주어지고 절단기의 길이가 x일 때 (trees[i] - x)만큼 집에 나무를 가져갈 수 있다. 적어도 m미터의 나무를 가져가기 위한 절단기의 최대 길이를 구하면 된다. 이를 구하기 위해 이분 탐색을 이용한다. 일반적인 이분 탐색은 원소 값들을 탐색하지만 해당 문제에서는 원소 값들을 탐색해서는 답을 찾을 수 없다. 따라.. 2022. 3. 4.
이진 탐색(Binary Search) 배열이 정렬되어 있을 때, 가운데 값과 비교하여 찾고자하는 값이 더 크면 오른쪽을 작다면 왼쪽을 탐색하는 방식 예시 [2, 5, 7, 9, 14, 19, 20, 24]가 있을 때 만약 2를 찾고 싶다면 가운데 값인 14와 비교를 하면 더 작기 때문에 다시 왼쪽 부분인 [2, 5, 7, 9]에서 같은 방식으로 반복한다. 최종적으로 2를 찾아 인덱스를 리턴하게 된다. 장점 시간복잡도가 log n으로 상당히 빠르다. 완전 탐색을 수행했을 때 시간 초과가 나는 여러 문제에서 활용될 수 있다. 구현 재귀로 구현 int recursive_binarySearch(vector arr, int start, int end, int target){ if(start > end) return -1; int mid = (star.. 2022. 3. 3.
프로그래머스 - N으로 표현 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 문제 풀이 N으로 표현할 수 있는 경우는 N 한 가지이다. 이를 DP[0]이라고 하면 DP[0] = { N }이다. N 2개로 표현할 수 있는 경우는 NN, (N+N, N-N, N*N, N/N) 이며 이를 DP[1]이라 하면 DP[1] = { NN, N+N, N-N, N*N, N/N } 이다. N 3개로 표현할 수 있는 경우는 NNN, (NN+N, NN-N, NN*N, NN/N), {(N+N)+N), (N+N)-N, (N+N)*N, (N+N)/N}, ... 이다. 이를 DP[2]라 하면 DP[2]는 DP[1]와 DP[0]의 사.. 2022. 3. 2.
정렬의 종류 및 구현(C++) 선택 정렬 전체 배열을 순회하며 가장 작은 원소를 앞으로 보내는 방식 #include using namespace std; int main(){ int arr[10] = { 3, 5, 1, 2, 7, 6, 9, 8, 4, 10 }; for(int i=0; i 2022. 3. 1.
반응형