99클럽 코테 스터디 11일차 TIL +241108

Yellta·6일 전
0

TIL

목록 보기
85/89

도서관

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;

    priority_queue<int> left;
    priority_queue<int> right;

    // 왼쪽과 오른쪽을 각각 힙에 넣음
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        if (x < 0) {
            left.push(-x);  // 음수 좌표는 양수로 변환
        } else {
            right.push(x);  // 양수는 그대로
        }
    }

    priority_queue<int> distance;  // 최종 거리를 저장할 최대 힙

    // 왼쪽 힙에서 m개씩 그룹화하여 가장 먼 거리 저장
    while (!left.empty()) {
        distance.push(left.top());
        for (int i = 0; i < m && !left.empty(); i++) {
            left.pop();
        }
    }

    // 오른쪽 힙에서 m개씩 그룹화하여 가장 먼 거리 저장
    while (!right.empty()) {
        distance.push(right.top());
        for (int i = 0; i < m && !right.empty(); i++) {
            right.pop();
        }
    }

    int answer = 0;

    // 가장 먼 거리는 한 번만 이동
    if (!distance.empty()) {
        answer += distance.top();
        distance.pop();
    }

    // 나머지 거리는 왕복하므로 두 배씩 더함
    while (!distance.empty()) {
        answer += distance.top() * 2;
        distance.pop();
    }

    cout << answer << '\n';
    return 0;
}

REVIEW


#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

profile
Yellta가 BE개발해요! 왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜 가 제일 중요하죠
post-custom-banner

0개의 댓글