Skip to content

Conversation

@esc10946
Copy link
Contributor

🚀 이슈 번호

Resolve: {#2337}

🧩 문제 해결

스스로 해결:

🔎 접근 과정

문제 해결을 위한 접근 방식을 설명해주세요.

  • 🔹 어떤 알고리즘을 사용했는지 : 그리디, 정렬
  • 🔹 어떤 방식으로 접근했는지 : 풍선은 무조건 a, b의 거리를 비교해서 가까운 곳으로 배정하려다가 둘의 차가 심한 그룹부터 풍선을 나눠주는 식으로 구현하였다

⏱️ 시간 복잡도

시간 복잡도 분석을 작성해주세요.
최악의 경우 수행 시간은 어느 정도인지 분석합니다.

  • Big-O 표기법: O(?)
  • 이유:

💻 구현 코드

#include <bits/stdc++.h>
#define endl "\n"

using namespace std;

struct team
{
    int balloons, disA, disB;
};

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

    while (true)
    {
        int N, A, B; cin >> N >> A >> B;
        if (!N && !A && !B) break;
        long long ans = 0;
        vector<team> teams(N);

        for (int i = 0; i < N; ++i) {
            cin >> teams[i].balloons >> teams[i].disA >> teams[i].disB;
        }

        // A와 B까지의 거리의 차가 큰 순서로 정렬
        sort(teams.begin(), teams.end(), [](team a, team b) { return abs(a.disA - a.disB) > abs(b.disA - b.disB); });

        for (int i = 0; i < N; ++i) {
            int Balloon = teams[i].balloons;
            int curDisA = teams[i].disA;
            int curDisB = teams[i].disB;

            if (curDisA < curDisB) {
                if (A >= Balloon) {
                    ans += Balloon * curDisA;
                    A -= Balloon;
                }
                else {
                    // A에 남은 풍선부터 전달
                    ans += curDisA * A;
                    Balloon -= A;
                    A = 0;
                    // 남은 양만큼 B에서 전달
                    ans += Balloon * curDisB;
                    B -= Balloon;
                }
            }
            else {
                if (B >= Balloon) {
                    ans += Balloon * curDisB;
                    B -= Balloon;
                }
                else {
                    ans += curDisB * B;
                    Balloon -= B;
                    B = 0;

                    ans += Balloon * curDisA;
                    A -= Balloon;
                }
            }
        }

        cout << ans;
    }
    return 0;
}

@esc10946 esc10946 linked an issue Jan 28, 2026 that may be closed by this pull request
@esc10946 esc10946 self-assigned this Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

260128 : 코딩테스트

2 participants