hyunjin

[C++][BOJ 1461 도서관] 정렬 본문

알고리즘 연습/백준

[C++][BOJ 1461 도서관] 정렬

_h.j 2021. 9. 7. 11:51
728x90

BOJ 도서관

 

골드5 정렬

 

문제 풀이

좀 버벅거리면서 풀었다.

중요 포인트는 양수 음수 따로 생각해줘야한다는 것.

m개 묶음에서 가장 먼 곳의 거리*2해서 더하고

마지막으로 간 곳에서 원점으로 되돌아올 필요없으니 빼준다.

 

소스 코드

#include <bits/stdc++.h>
using namespace std;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);		
	int n,m,p_pos=0;
	cin >> n >> m; 
	int dis[n];
	for(int i = 0 ; i < n ;i++){
		cin>>dis[i];
		if(dis[i]<0) p_pos++;
	}
	sort(dis,dis+n);
	
	int result = 0;
	for(int i = n-1; i>= p_pos ;i-=m){
		result += (dis[i]*2);
	}
	for(int i = 0; i< p_pos ;i+=m){
		result += (abs(dis[i]*2));
	}
	
	result -= max(dis[n-1], abs(dis[0]) );
	cout<<result;

	
}

 

 

참고

풀이 참고

 

 

728x90