[백준] 11399 ATM(Java)

수경·2022년 12월 1일
1

problem solving

목록 보기
70/174

백준 - 11399 ATM

풀이

문제에서 나온 배열 P를 정렬하고 누적해서 더해주면 최소값이 나온다.
DP문제인가 싶었는데 딱히 DP라 할 것도 없이 그냥 바로 더해주면 될 것 같아서 더했다.

  1. 입력이 P = [3, 1, 4, 3, 2] 인 경우, 정렬해서 P = [1, 2, 3, 3, 4] 로 저장

  2. 각 사람들이 걸린 시간 = 누적해서 걸린 시간
    각 사람들이 걸린 시간 = [1, 3, 6, 9, 13] 이고, 총 합을 구해주면 된다.

  3. 결국 1 + 3 + 6 + 9 + 13 인데,
    이는 1 + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3 + 3) + (1 + 2 + 3 + 3 + 4) 와 같다.
    P1은 5번, P2는 4번, P3는 3번, P4는 2번, P5는 1번 더해진다.
    ➡️ 이걸 이용해서 dp로 풀지 않고 for문으로 바로 계산!


뜬금 삽질🫠

결과값이 잘 나오는 걸 확인하고 제출했는데 컴파일 에러가 났다.

인텔리제이에서 잘 돌아가는데 컴파일 에러가 난다고??? 그대로 복붙했는데???

이건 찾아봐야 할 것 같아서 찾아봤더니 바로 나왔다.

❗️클래스명을 반드시 Main으로 해야한다는 것!

백준 왜 이런거 말 안해줘? 🥺 너무해 ㅠ...... 나만 몰랐지 또? 🥹...

백준 자바로 처음 푼 사람의 비애,,,

그래도 문제는 금방 풀어서 좋다 실버4짜리지만 ㅋㅎ,,


코드

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = Integer.parseInt(sc.nextLine());
		int[] time = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
		Arrays.sort(time);
		int result = 0;
		for (int i = 0; i < num; i++) {
			result += time[i] * (num - i);
		}
		System.out.println(result);
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글