알고리즘

백준 2750 수 정렬하기 문제는 시간복잡도는 상관 없이 정렬만 되면 해결 할 수 있는 문제다. 정렬에는 대표적으로 버블 정렬과 삽입 정렬이 있다. 아래는 각 정렬 방식에 대한 코드이다. 버블 정렬(Bubble Sort) #include #include using namespace std; void InsertionSort(int *arr, int length) { int key; for (int i = 1; i key) { memmove(&arr[j + 1], &arr[j], sizeof(int) * (i - j)); arr[j..
백준 10818 문제는 N 개의 정수가 주어지면 최솟값과 최대값을 구하는 정말 간단한 문제이다. 근데 난 이 문제를 여러 번 틀렸는데, 이유는 문제에서 주어진 범위가 -1000000부터 1000000까지였다는 점을 주의하지 않았기 때문이다. 알고리즘은 정말 간단한 문제고, 쉽게 풀었지만 코딩 테스트에서는 정수의 범위를 간과하면 안된다것을 알아야한다. #include using namespace std; int main() { int N; cin >> N; int *arr = new int[N]; int min = 1000000; int max = -1000000; for (int i = 0; i > arr[i]; if (arr[i] < min) min = arr[i]; if..
분해합 문제는 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하는 문제이다. 최소의 문제를 구하는 문제이기 때문에 정수 1부터 시작해서 생성자를 구해서 최초의 생성자가 나오면 종료하면 된다. #include using namespace std; int main() { int N; cin >> N;..
백준 2798번 블랙잭 문제는 브루트 포스 알고리즘으로 푸는 문제이다. 브루트 포스는 정말 간단한 알고리즘으로, 모든 경우의 수를 구해보고 해답을 찾는 알고리즘이라고 생각하면된다. 때문에 문제를 풀기에는 굉장히 쉽지만 경우의 수가 많아질수록 소요 시간이 기하급수적으로 올라갈 수 있다는 점이다. 2798번 문제는 N개의 정수가 주어지면, 그 중 3개의 정수를 합했을 때 M보다 작으면서 가장 큰 값을 구하는 문제이다. 이 문제는 3중 for문으로 반복하며 모든 경우의 수를 구하면서 주의해야할 점은 2, 3번째 for문의 index의 시작 범위를 잘 정해주어야한다는 점이다. 첫 번째 for 문의 index는 N - 2 전까지 돌고 두 번째 for 문의 index는 첫 번째 for 문의 index + 1 부터 ..
오뚜깅
'알고리즘' 카테고리의 글 목록 (13 Page)