본문 바로가기

알고리즘

백준 1110번: 더하기 사이클 (C++) 1.문제0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 2.입력첫째 줄.. 더보기
백준 4344번: 평균은 넘겠지 (C++) 1.문제대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 2.입력첫째 줄에는 테스트 케이스의 개수 C가 주어진다.둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 3.출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 소스코드#include #include using namespace std; int main() { int stdNum; //학생수 int sum; //합계 int stdCnt; //평균학생 수 double average; // 소.. 더보기
Quick Sort (C++ 퀵정렬) Quick Sort C++퀵정렬 퀵 정렬은 기준점(pivot)을 정하고 앞(left)와 뒤(right)를 비교하면서 정렬을 하는 알고리즘입니다. 장점: 수행속도가 빠른 정렬 알고리즘이다.단점: 중심값이 같을 경우에는 배열의 순서가 파괴 될 수도 있으며 안정성이 없다는 점이다. *퀵 정렬에 대한 자세한 메소드 설명은 소스 코드의 주석 참조//퀵 정렬 소스코드 #include using namespace std; int Partiton(int arr[], int left, int right); // 퀵 정렬 메소드 (나누기) void QuickSort(int arr[], int left, int right); // 퀵 정렬 메소드 (재귀) void Swap(int *A, int *B); // 값 교환 메소드.. 더보기