Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유데미부트캠프
- 넘파이
- 데이터프레임
- 태블로
- 데이터드리븐
- 시각화
- pandas
- ndarray
- matplotlb
- 브루트포스 알고리즘
- 유데미
- python
- Tableau
- 스타터스부트캠프
- 백준
- 데이터시각화
- 판다스
- 정렬
- numpy
- DataFrame
- 파이썬
- 코딩테스트
- 그리디 알고리즘
- 유데미큐레이션
- 유데미코리아
- Leetcode
- 부트캠프후기
- Til
- 취업부트캠프
- 데이터분석
Archives
- Today
- Total
Diary, Data, IT
[백준] 11399번 ATM - Python 본문
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
https://www.acmicpc.net/problem/11399
문제
N명의 사람이 돈을 인출하려고 하는 상황입니다. 각 사람이 돈을 인출하는데 걸리는 시간이 주어질 때,
모든 사람이 기다려서 돈을 인출하는데 걸리는 시간의 합의 최솟값을 구해주세요.
아이디어
모든 사람들이 기다리는 시간을 최소가 되게 하려면 인출 시간이 적게 걸리는 사람부터 순차적으로 진행하도록 해야합니다.
또한 i+1번째 사람이 인출하는데 걸리는 시간은 'i번째 사람이 기다려서 인출하는데 걸린 시간' + 'i+1번째 사람이 인출하는 시간'의 형태로 계속 누적되는 것을 이용합니다.
따라서 오름차순으로 정렬해준 뒤 반복적으로 인출하는데 걸리는 시간의 합계를 구해줍니다.
코드
N = int(input())
time = sorted(list(map(int,input().split())))
num = 0
sum = 0
for i in range(N):
num = num + time[i]
sum += num
print(sum)
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준] 1978번 소수 찾기 - Python (0) | 2022.09.15 |
---|---|
[백준] 4673번 셀프 넘버 - Python (0) | 2022.09.08 |
[백준] 10610번 30 - Python (0) | 2022.09.08 |
[백준] 11047번 동전 0 - Python (0) | 2022.09.07 |
[백준] 1065번 한수 - Python (0) | 2022.09.07 |