[백준/BOJ] 1461. 도서관 [Gold 5]

jychan99·2022년 1월 6일
0
post-thumbnail
  1. 도서관

문제출처 : https://www.acmicpc.net/problem/1461

code

#include<iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

int main()
{
	int N, M, arr[51] = { 0, };
	int i, neg_cnt = 0, result = 0;

	cin >> N >> M;
	for (i = 0; i < N; i++)
	{
		cin >> arr[i];
		if (arr[i] < 0) neg_cnt++;
	}

	sort(arr, arr + N);

	for (i = 0; i < neg_cnt; i += M)
		result += abs(arr[i] * 2);

	for (i = N - 1; i >= neg_cnt; i -= M)
		result += abs(arr[i] * 2);

	(abs(arr[0]) <= abs(arr[N - 1])) ? result -= abs(arr[N - 1]) : result -= abs(arr[0]);

	cout << result;

	return 0;
}

이 문제는 보자마자 정렬해야겠다고 생각이 들어야한다.
정렬을 해서 음수와 양수를 따로 생각해야한다.
절댓값으로 가장 멀리있는 곳은 왕복하지 않는데,
일단 음수방향, 양수 방향 모두 왕복을 한다음에 마지막에 빼주는게 깔끔하다..
어떻게 푸는지는 알았는데, 코드를 어떻게 짜느냐에따라 몇백줄이 넘어가기도하고 30줄정도에 끝낼수있는 문제인것같다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글