본문 바로가기
Problem Solving/Baekjoon

[백준] 1461 도서관 - Greedy / Java

by graycode 2022. 12. 26.

 문제 링크

 

1461번: 도서관

세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[] arr = new int[n];
        int pivot = 0;

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            int input = Integer.parseInt(st.nextToken());
            arr[i] = input;

            if (input < 0)
                pivot++;
        }

        Arrays.sort(arr);

        int cnt = 0;
        for (int i = 0; i < pivot; i += m)
            cnt += Math.abs(arr[i] * 2);

        for (int i = n - 1; i >= pivot; i -= m)
            cnt += arr[i] * 2;

        cnt -= Math.max(Math.abs(arr[0]), Math.abs(arr[n - 1]));

        bw.write(String.valueOf(cnt));
        bw.flush();
    }

}

댓글