[C/C++] 백준 #1377 버블 소트(안정적 정렬)
이번 문제는 난이도 Gold V입니다. 저는 이런 문제를 좋아합니다. 알고리즘의 기본을 잘 이해하는지 물어보는 문제이기도 하니까요. 정렬은 알고리즘을 배우면서 가장 먼저 배우는 알고리즘이기도 합니다만, 기본을 충실하게 알고 있는 사람은 많지 않습니다. https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 대부분 기본정렬은 선택정렬, 삽입정렬, 버블정렬이 있고, 고급정렬은 병합정렬, 힙정렬, 퀵정렬이 있고, 기본정렬은 \(O(N..
2020. 2. 5.
#1353 합과 곱(Mathematics, Binary Search)
이번 문제는 Platinum V 난이도로 설정된 문제입니다. 정답자도 39명뿐입니다. 난이도에 비해서 많이 풀지 않은 문제입니다. 수학적 지식으로는 산술평균과 기하평균의 대소 비교만 알고 있으면 쉽게 풀 수 있습니다. 수열 A가 있는데, 이 수열에 있는 수들을 합하면 S, 곱하면 P의 값을 가집니다. 예를 들어서 { 1, 3, 2 } 수열이라면, S=6, P=6이 됩니다. 문제는 이러한 S와 P가 주어질 때, 만족하는 양의 실수 수열의 최소 크기를 구하라는 것입니다. 문제에서는 음이 아닌 실수이지만, P의 범위가 1 이상이므로 양의 실수만 생각해도 됩니다. S=6, P=6 이라면, { 1, 3, 2 } 도 되지만, { 6 } 도 가능하므로, 최소 수열의 수 갯수는 1이 됩니다. 이 문제를 풀기 위해서는 ..
2020. 2. 1.