인프런 커뮤니티 질문&답변
이렇게 해도 되나요?
작성
·
265
0
간단하게 보여드리기 위해
변수랑 숫자는 문제 그대로를 사용했습니다
arr배열에 1~9까지를 누적 합계를 사용하여
total/m 과 가장 차이가 나지 않는 부분에 도달하면
분리시킬 수 있도록 만들어봤는데
이렇게 해도 되나요?
#include <iostream>
#include <math.h>
using namespace std;
int arr[9]={1,3,6,10,15,21,28,36,45};
int main(){
int m=3;
int totalmax=0;
int total=45;
int lt=0,rt=8;
int d=0;
int min=0;
while(lt<=rt){
int idx=0;
min=21000000;
for(int i=lt;i<=rt;i++){
arr[i]=arr[i]-d;
cout<<i<<"arr:" << arr[i]<<endl;
if(min > abs((total/m) - arr[i])){
min=abs((total/m) - arr[i]);
idx=i;
}
}
d=arr[idx];
cout << "d:"<<d<<endl;
if(totalmax < arr[idx]){
totalmax=arr[idx];
}
lt=idx+1;
}
cout << totalmax;
}퀴즈
선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?
인접한 두 요소를 비교하여 필요시 교환합니다.
정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.
현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.
배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.





