[백준] 11399번: ATM 자바(Java)

2024. 12. 31. 11:06·알고리즘/그리디

문제


 

11399번: ATM

N명의 사람이 줄을 서 있을 때 각 사람이 돈을 인출하는데 걸리는 시간의 합을 최소화하는 프로그램을 작성하시오.

www.acmicpc.net

접근법


1. 계산법 자체가 뒤로 갈수록 숫자가 중첩되게 곱해지는 형태이기 때문에 정렬을 한 후 계산해야 한다.

2. 현재 계산법은 모두 덧셈으로 이루어져 있는데 이를 곱셈으로 바꾸면 식이 훨씬 간단해진다.

예) 1,2,3,4,5 <- Pi의 순서를 이렇게 가정

현재 계산법 : 1 + (1+2) + (1+2+3) + (1+2+3+4) + (1+2+3+4+5)

곱셈을 적용한 계산법 : 1*5 + 2*4 + 3*3 + 4*2 + 5*1

-> 이렇게 하면 바로 어떤 알고리즘이 잘 보일 것이다. 잘 모르겠다면 각 숫자의 의미를 정확히 생각해보면 좋다. '곱셈을 적용한 계산법'에서 '*' 왼쪽에 있는 숫자는 Pi로 주어진 숫자이고 '*' 오른쪽에 있는 숫자는 Pi가 더해지는 횟수를 의미한다. 즉, Pi는 (N-i)번 더해진다는 것을 알 수 있다.

풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        ArrayList<Integer> pList = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            pList.add(Integer.parseInt(st.nextToken()));
        }

        Collections.sort(pList);

        int sum = 0;
        for (int i = 0; i < N; i++) {
            sum += pList.get(i) * (N - i);
        }

        System.out.println(sum);

    }
}

 

'알고리즘 > 그리디' 카테고리의 다른 글

[백준] 14916번: 거스름돈 자바(Java)  (1) 2025.01.11
[백준] 13305번: 주유소 자바(Java)  (0) 2025.01.07
[백준] 1541번: 잃어버린 괄호 자바(Java)  (3) 2025.01.06
[백준] 2217번: 로프 자바(Java)  (0) 2025.01.06
[백준] 1018번: 보물 자바(Java)  (1) 2024.12.28
'알고리즘/그리디' 카테고리의 다른 글
  • [백준] 13305번: 주유소 자바(Java)
  • [백준] 1541번: 잃어버린 괄호 자바(Java)
  • [백준] 2217번: 로프 자바(Java)
  • [백준] 1018번: 보물 자바(Java)
park-walnut
park-walnut
박호두의 블로그 입니다.
  • park-walnut
    박호두의 블로그
    park-walnut
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • cs지식 (0)
        • os (0)
        • 컴퓨터구조 (0)
        • DB (0)
      • 알고리즘 (10)
        • 정렬 (1)
        • 브루트포스 (2)
        • 그리디 (6)
        • 그래프 (1)
      • 트러블 슈팅 (1)
      • server (1)
        • spring (0)
        • jpa (0)
        • redis (0)
      • 일상 (1)
        • 음악 (1)
        • 일기 (0)
      • 프로젝트 (0)
  • hELLO· Designed By정상우.v4.10.3
park-walnut
[백준] 11399번: ATM 자바(Java)
상단으로

티스토리툴바