강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

유하님의 프로필 이미지
유하

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

44. 마구간 정하기 (이분검색 응용 : 결정 알고리즘)

이렇게 해도 되나요?

작성

·

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) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?

인접한 두 요소를 비교하여 필요시 교환합니다.

정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.

현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.

배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

채점폴더를 드렸으니 채점받을 수 있는 코드로 구현해서 한 번 채점을 해보시기 바랍니다.

유하님의 프로필 이미지
유하

작성한 질문수

질문하기