알고리즘 (56) 썸네일형 리스트형 [C/C++] 선택 정렬같은 버블 정렬 구현(선택정렬 + 버블정렬) 선택 정렬(selection sorting)은 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 정렬 방식으로 가장 작은 숫자와 가장 작은 숫자의 위치를 기억했다가 마지막 수까지 비교가 끝나면 마지막에 교환을 해줍니다. 버블 정렬(bubble sort)은 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬 방식으로 이웃한 데이터와 비교하여 계속해서 교환하는 방식입니다. 그런데 선택 정렬도아닌 버블 정렬도 아닌, 두 알고리즘을 합쳐서 구현한 알고리즘이 있습니다. 예를 들어 다음과 같이 1부터 10까지의 수를 무작위로 섞어놓은 배열이 있습니다. 값56104387129 위치[0][1][2][3][4][5][6][7][8][9] 선택 정렬의 경우 [0] 인덱스와 [1], [2], . . .. [C/C++] 선택 정렬(selection sort) 알고리즘을 활용한 오름차순정렬 선택 정렬이란? 선택 정렬(seleciton sort)은 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 정렬 방식입니다. 예를 들어 다음과 같이 1부터 10까지의 수를 무작위로 섞어놓은 배열이 있습니다. 값56104387129 위치[0][1][2][3][4][5][6][7][8][9] 5부터 9까지 훑어보면서 가장 작은 값을 찾아야 합니다. 5와 비교할 숫자는 다음에 오는 숫자 6부터 마지막 숫자까지 비교한다. 선택 정렬은 가장 작은 숫자와 가장 작은 숫자의 위치를 기억했다가 마지막 수까지 비교가 끝나면 마지막에 교환을 해줍니다. 이제 위치[0]의 정렬은 끝났습니다. 위 과정을 반복해 주면 됩니다. #include int main(){ //1~10 무작위 배열 int arr[10] = {5, .. [C/C++] 코드업(codeup) 4564번 계단 오르기 ▽문제 바로가기 https://codeup.kr/problem.php?id=4564 계단 오르기 첫째 줄에 계단의 개수가 주어진다. 둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 있는 점수는 10000이하의 자연수이다. codeup.kr 입력 첫째 줄에 계단의 개수가 주어진다. 둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 있는 점수는 10000이하의 자연수이다. 출력 첫째 줄에 계단 오르기 게임에서 얻을 수 있는 총 점수의 최대값을 출력한다. 문제 풀이 규칙 1. 계단은 한 번에 한게단씩.. [C/C++] 코드업(codeup) 3733번 우박수 길이 (3n+1) (large) ▽문제 바로가기 https://codeup.kr/problem.php?id=3733 우박수 길이 (3n+1) (large) 두 자연수 a, b가 공백으로 분리되어 입력된다. ( 1 [C/C++] 코드업(codeup) 3704번 계단 오르기 2 ▽문제 바로가기 https://codeup.kr/problem.php?id=3704 계단 오르기 2 계단의 수 n이 입력된다. ( 1 [C/C++] 코드업(codeup) 3702번 파스칼의 삼각형 2 ▽문제 바로가기 https://codeup.kr/problem.php?id=3702 파스칼의 삼각형 2 (r, c)의 원소 값을 100,000,000으로 나눈 나머지를 출력한다. codeup.kr 입력 자연수 r과 c가 입력된다. (1 [C/C++] 버블 정렬(bubble sort) 알고리즘으로 올림차순 구현하기 버블 정렬이란? 버블 정렬(bubble sort)은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬하는 방식입니다. 버블 정렬은 가장 무식하고 비효율적인 알고리즘 중 하나이지만 가장 직관적이고 구현하기 쉬운 알고리즘입니다. 예를 들어 다음과 같이 1부터 10까지의 수를 무작위로 섞어놓은 배열이 있습니다. 값56104387129 위치[0][1][2][3][4][5][6][7][8][9] 먼저 5와 6을 비교하였을 때 뒤에 있는 6이 더 큰 숫자이므로 교환이 일어나지 않습니다. 다음은 6과 10을 비교하였을때 뒤에 있는 10이 더 큰 숫자이므로 역시 교환이 일어나지 않습니다. 다음은 10과 4를 비교하였을때 앞에 있는 10이 더 큰 숫자이므로 두 숫자는 교환이 일어납니다. 값5641.. [C/C++] 코드업(codeup) 1916번 피보나치 수열 (Large) 그리고 메모이제이션 ▽문제 바로가기 https://codeup.kr/problem.php?id=1916 (재귀함수) 피보나치 수열 (Large) $N$번째 피보나치 수를 출력하되, $10,009$를 나눈 나머지 값을 출력한다. codeup.kr 입력 200이하의 자연수 N 입력 출력 N번째 피보나치 수를 출력하되, 10,009를 나눈 나머지 값을 출력 문제 풀이 먼저 일반적인 재귀 함수를 이용하여 N번째 피보나치를 출력하는 코드입니다. #include int recur(int a){ if(a==1||a==2){ return 1; } else{ return recur(a-1) + recur(a-2); } } int main(){ int a, sum=1; scanf("%d", &a); int result = recur(a); .. 이전 1 ··· 4 5 6 7 다음