[백준] 11399 - ATM
2020. 8. 26. 17:10ㆍ알고리즘/Baekjoon
728x90
#그리디 알고리즘 #정렬
일단 접근방법은 맞았고 IntelliJ 결과값도 잘 나왔는데 백준 런타임 에러 가 4번 떠서 당황한 문제. 원인은 문제해결과 무관한 코드 입력 때문이었다(a.k.a 쓸모없는 코드입력이나 접근방법은 배제하라 아님 에러를 주겠어)
요즘 유튜브로 DP(다이나믹 프로그래밍)을 공부해서 최소값과 현재 배열 index 전까지의 총합을 구하는 부분이 타일링이나 피보나치와 유사하다고 생각해 dp[] 배열을 만들어서 total을 구했다. = (런타임 에러 구덩이로 빠진 이유)
A의 총 인출에 걸린시간(waiting)을 구하는 간단한 공식 waiting[i] = waitng[i-1] + waiting[i]; 만 작성해줘도 풀리는 문제다.
(A의 총 인출시간 = 앞선 사람들 인출시간 + 본인 인출시간)이 나오기 때문에 모든 사람의 인출시간은 반복문으로 배열의 합만 구하면 끝이다. 여하튼 런타임 에러 구덩이가 인상깊어 후기를 남기게 됐다.
solved.ac 기준 실버3 레벨 문제였는데 헤매지 않고 한 방에 해결까지 가서 나쁘지 않았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class ATM_11399 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//사람 수
int people = Integer.parseInt(br.readLine());
//인출 시간
String[] input1 = br.readLine().split(" ");
//int 배열 선언
int[] waiting = new int[people];
for (int i = 0; i < people; i++) {
waiting[i] = Integer.parseInt(input1[i]);
}
//waiting 배열 ASC 정렬
Arrays.sort(waiting);
//인출 시간 총합
int total = 0;
//각 사람의 인출 시간
for(int i = 1; i < people; i++) {
waiting[i] = waiting[i-1] + waiting[i];
total += waiting[i];
}
System.out.println(total+waiting[0]);
}
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 11654 - 아스키 코드 변환 (0) | 2020.09.02 |
---|---|
[백준] 1065 - 한수 (0) | 2020.09.01 |
[백준] 1003 - 피보나치 함수(재도전) (0) | 2020.08.26 |
[백준] 1758- 알바생 강호 (0) | 2020.08.26 |
[백준] 11726 - 2xn 타일링 (0) | 2020.08.24 |