반응형
https://curiouskidd.tistory.com/15
main calss 규정
https://www.acmicpc.net/problem/11399
최소 시간을 구하는 문제입니다.
사람마다 일을 처리하는데 걸리는 시간이 다를 것이고, 처리 순서에 따라서 필요한 시간의 합은 달라질 것입니다.
int n = 5;
int[] arrayInt = {3, 1, 4, 3, 2};
Arrays.sort(arrayInt); // array의 순서 정렬
int returnInt = 0;
int lengthInt = n;
for (int value : arrayInt) {
returnInt += (value * lengthInt);
lengthInt -= 1;
}
System.out.println(returnInt);
본문의 문제처럼 처음 하는 사람의 일 처리 시간은 계속 해서 더해질 것입니다.
만약 사람이 5명이고, 첫번째 사람이 사용한 시간이 2분일경우,
최소 맨마지막 사람이 일처리를 하는데 필요한 시간은 10분 + @ 일것입니다.
문제처럼 처음사람의 소모한 시간은 n명만큼 반복될것이고, 순서가 지나감의 따라서 반복되는 시간은 적어질 것입니다.
따라서 가장 적은 시간의 총합은 시간의 소모가 적은 사람이 먼저 진행하고,
시간의 소모가 큰 사람들이 최대한 반복되지 않게 하는 것입니다.
int n = 5;
int[] arrayInt = {3, 1, 4, 3, 2};
Arrays.sort(arrayInt); // array의 순서 정렬
순서를 정렬한 다음, 시간의 총 합을 구했습니다.
for (int value : arrayInt) {
returnInt += (value * lengthInt); // n명은 계속 줄어들것이므로 -1을 계산함
lengthInt -= 1;
}
해당 코드로 테스트 진행하였고, 테스트에 성공하였습니다.
반응형
'CodingTest' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (0) | 2023.05.01 |
---|---|
[프로그래머스] 이진 변환 반복하기 (0) | 2023.04.28 |
[프로그래머스] 최솟값 만들기 (0) | 2023.04.28 |
[백준] 코드 제출 필수 내용 (0) | 2022.09.29 |
[백준][2839] 설탕 배달 (1) | 2022.09.29 |