Skip to content

251203 : [BOJ 1461] 도서관 #2223

Open
sksn12 wants to merge 1 commit intomainfrom
sksn12/2219/1
Open

251203 : [BOJ 1461] 도서관 #2223
sksn12 wants to merge 1 commit intomainfrom
sksn12/2219/1

Conversation

@sksn12
Copy link
Copy Markdown
Contributor

@sksn12 sksn12 commented Dec 3, 2025

🚀 이슈 번호

Resolve: {#2219}

🧩 문제 해결

스스로 해결:

🔎 접근 과정

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

  • 🔹 어떤 알고리즘을 사용했는지 : 그리디
  • 🔹 어떤 방식으로 접근했는지 : 양쪽에서 가장 먼 곳부터 M권씩 묶어 왕복거리(×2)를 더하고, 전체에서 가장 먼 곳은 마지막에 편도로 한 번만 가서 그 거리만큼 뺐다

⏱️ 시간 복잡도

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

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

💻 구현 코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        ArrayList<Integer> pos = new ArrayList<>(); // 오른쪽(양수)
        ArrayList<Integer> neg = new ArrayList<>(); // 왼쪽(음수, 절댓값으로 저장)

        int maxDist = 0;
        for (int i = 0; i < N; i++) {
            int x = Integer.parseInt(st.nextToken());
            if (x > 0) {
                pos.add(x);
                if (x > maxDist) maxDist = x;
            } else if (x < 0) {
                int a = -x;
                neg.add(a);
                if (a > maxDist) maxDist = a;
            }
        }

        // 내림차순 정렬 (먼 거리부터 처리)
        Collections.sort(pos, Collections.reverseOrder());
        Collections.sort(neg, Collections.reverseOrder());

        long ans = 0L;

        // 각쪽에서 M개씩 뽑을 때마다 2 * 거리 (왕복)
        for (int i = 0; i < pos.size(); i += M) {
            ans += 2L * pos.get(i);
        }
        for (int i = 0; i < neg.size(); i += M) {
            ans += 2L * neg.get(i);
        }

        // 전체에서 가장 먼 거리만큼 한 번만 가면 되므로 그만큼 빼줌
        ans -= maxDist;

        System.out.println(ans);
    }
}

@sksn12 sksn12 self-assigned this Dec 3, 2025
@sksn12 sksn12 requested a review from dlchdaud123 as a code owner December 3, 2025 14:05
@sksn12 sksn12 linked an issue Dec 3, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

251203 : 코딩테스트

1 participant