[Java] 백준 11399. ATM

정석·2024년 5월 21일
0

알고리즘 학습

목록 보기
48/67
post-thumbnail

🧑🏻‍💻 문제

💡문제 분석 요약

  • N 명의 사람이 존재함
  • 각 사람들마다 돈을 인출하는데 걸리는 시간이 정해져 있음.
  • 사람들이 한 줄로 서서 모든 사람이 인출한 시간을 구하려면 시간이 계속 누적됨

💡알고리즘 설계

💡코드

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 i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(arr);
		int sum = 0;
		int result = 0;
		
		for (int i = 0; i < N; i++) {
			sum += arr[i];
			result += sum;
		}
		System.out.println(result);
	}
}

💡시간복잡도

N 명의 사람의 배열 저장 시간 N,
N 명의 사람 인출 시간 누적 계산 N
2N 이므로 따라서 O(N)

💡 틀린 이유

누적 값을 구현하는게 쉽게 떠오르지 않아 어려움이 있었다.
구현할 때 귀찮아도 손으로 적어보거나 디버깅을 잘 활용하자!

0개의 댓글