반응형
풀이과정
시간의 합이 최소가 되려면 출력시간이 오름차순으로 배열되어야 함.
기다림 + 인출 시간은 앞의 변수들 + 현재 변수를 모두 합한 값
Array에 sort 함수 사용할 생각 못 하고 ArrayList sort 함수 사용함. 으이그
1등 코드
메모리 : 12836 KB
시간 : 72 ms
코드길이 : 498 B
내 코드
메모리 : 14456 KB
시간 : 144 ms
코드길이 : 1004 B
[상위 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int n = 0; n < N; n++) {
arr[n] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int result = 0;
for(int i = 0; i < N; i++) {
result += arr[i]*(N - i);
}
System.out.print(result);
}
}
>> 똑같은 코드로 짜서 넣었을 때 나는 132 ms 나와서 아예 코드 복붙하고 돌렸더니 132 ms 나옴.. 뭐지?
>> result += arr[i] * (N-1); 식을 생각은 했는데 직관적이지 않다고 생각해서 메모리를 사용하더라도 변수를 사용했다. 뭐가 더 좋은지는 모르겠음
[내 코드]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Comparator;
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));
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> arrList = new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for(int n = 0; n < N; n++) {
arrList.add(Integer.parseInt(st.nextToken()));
}
arrList.sort(Comparator.naturalOrder());
int waitingTime = arrList.get(0);
int result = arrList.get(0);
for(int i = 1; i < N; i++) {
waitingTime += arrList.get(i);
result += waitingTime;
}
bw.write(Integer.toString(result));
bw.close();
}
}반응형
'알고리즘 > 정렬' 카테고리의 다른 글
| [백준] 1931 : 회의실 배정 (JAVA) (0) | 2025.04.28 |
|---|---|
| [백준] 10815 : 숫자카드 (0) | 2023.04.03 |
| [백준] 1181 : 단어 정렬 (0) | 2023.04.03 |